调整大小时的AS2舞台尺寸检测/ MC重新定位& framechange?

时间:2011-06-15 14:40:29

标签: flash resize positioning actionscript-2

创建一个全屏幕的网站,那里没有戏剧。

我面临的唯一问题是如果你调整窗口大小,然后点击一个新菜单,项目的程序化定位:即:

    contactheader._x = Stage.width / 2 - 252;
    contactheader._y = Stage.height / 2 - 264;


没有踢,直到你通过再次调整窗口“碰撞”到位。请参阅此处获取实时示例以及查看问题的步骤:

http://flash.pcfuse.com/

此处的项目文件:http://flash.pcfuse.com/mySite.zip

如何阻止项目忽略自己的程序化定位?

谢谢你

3 个答案:

答案 0 :(得分:1)

function setStage ()
{
    var sw:Number = Stage.width;
    var sh:Number = Stage.height;

    tabbar._x = Stage.width / 2;
    tabbar._y = Stage.height - 98;

    google._x = Stage.width / 2 - 183;
    google._y = Stage.height / 2 + 28;

    about_txt._x = Stage.width / 2 - 376;
    about_txt._y = Stage.height / 2 - 263;

}

// Add a listener
var stageListener:Object = new Object ();
Stage.addListener (stageListener);

// When the Stage dimensions change...
stageListener.onResize = setStage;

// Call our function to set it all up right!
setStage ();


得到了;)

答案 1 :(得分:0)

我认为您可能遇到的问题是,当您访问Flash应用程序的不同部分时,您将添加一个事件侦听器,以便在调整大小时正确定位显示对象。但是,在实际转到该部分时,您没有对这些对象进行任何动态定位。

为了澄清,当闪光片首次加载时,它会抓住舞台的高度和宽度,是否将物体放置在那些计算上,然后坐在那里。当您单击选项卡时,它不会重新加载这些对象并重新定位它们,因为它在应用程序首次启动时会这样做。一旦你开始调整swf的大小,它就会弹出它们,因为这就是onresize事件应该做的事情。

我建议编写一个函数来对每个部分中的对象进行定位,然后每当你点击要通过单击选项卡打开的特定部分时调用它,然后从onresize事件中调用该函数

答案 2 :(得分:0)

试试这个:

onEnterFrame = function(){
   contactheader._x = Stage.width / 2 - 252;
   contactheader._y = Stage.height / 2 - 264;
}

如果您想在任何时候停止更新其位置,请使用:

onEnterFrame = null;