首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Firefox3.5上获得stage.stageWidth和stageHeight

无法在Firefox3.5上获得stage.stageWidth和stageHeight
EN

Stack Overflow用户
提问于 2010-05-31 16:04:03
回答 1查看 868关注 0票数 0

这里有一个问题,我已经尝试找出,但仍然无法得到正确的方法来解决它。

在MAC上使用Firefox3.5时,我对显示有问题,我可以看到我的菜单,显示是正确的。菜单的位置就在它应该定位的位置之上。在MACOSX上,Safari可以很好地工作。我的闪存尺寸是: 1440x750。

看上去火狐无法识别stage.StageWidth和stage.StageHeight。它返回0。

一些人建议通过FlashVars传递电影的实际宽度和高度。这部电影用这些代替了stage.stageWidth和stage.stageHeight

有人有关于如何解决这个问题的代码示例吗??我很感激能指出正确的方向

我是否使用了正确的EnterFrame方法??

代码语言:javascript
复制
public function Main()
{
addEventListener(Event.ADDED_TO_STAGE, handleOnStage, false, 0, true);          
}


private function handleOnStage(event:Event):void
{   
removeEventListener(Event.ADDED_TO_STAGE, handleOnStage);

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode     = StageScaleMode.NO_SCALE;

stage.addEventListener(Event.RESIZE, handleResizeObjectsOnStage, false, 0, true);
addEventListener(Event.ENTER_FRAME, handleObjectsOnStage, false, 0, true);

bottomBarMC.x = 0;
bottomBarMC.y = 0;
}   


private function handleObjectsOnStage(event:Event):void
{
if (stage.stageWidth != 0 && stage.stageHeight != 0) {
 removeEventListener(Event.ENTER_FRAME, handleObjectsOnStage);

 initIntro();
 initObjectsOnStage();
}   
}


private function handleResizeObjectsOnStage(event:Event=null):void
{
  if (stage.stageWidth != 0 && stage.stageHeight != 0) {
initObjectsOnStage();
  }
}


private function initObjectsOnStage():void
{
// Resize dynamically bottomBarMC
bottomBarMC.width = stage.stageWidth;
bottomBarMC.height = stage.stageHeight;
addChild(bottomBarMC);

// Resize dynamically logo
logoMC.x = 40;
logoMC.y = stage.stageHeight - 100;
addChild(logoMC);


var loadIntro:Sprite = getCurrentMC();
//loadIntro.x = stage.stageWidth;
//loadIntro.y = 0;
addChild(loadIntro);
 } 
EN

回答 1

Stack Overflow用户

发布于 2010-06-06 08:13:33

问题是,在SWF加载时,阶段大小变量通常需要几毫秒来设置,因此,如果在初始化菜单之前运行定位菜单的代码,则会看到宽度和高度为0。

解决这个问题的方法是设置一个EnterFrame侦听器,该监听器将检查每个帧,以查看是否设置了舞台维度,当它们设置完毕时,它将调用您的定位代码。

这是如何做到的:

代码语言:javascript
复制
public function MainDocumentClass()
{
    addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

public function onEnterFrame(e:Event):void
{
    if (stage.stageWidth != 0 && stage.stageHeight != 0)
    {
        removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        onStageInitialized();
    }
}

public function onStageInitialized():void
{
    //put your menu positioning here
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2944672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档