Flash AS3中的动态stageWidth和stageHeight

3
这似乎是一件非常容易的事情,但它给了我很多头痛。我有一个电影剪辑,它是一个画廊,它被链接到当从AS单击按钮时调用。当单击画廊中的图像时,它使用Tween类淡入,并应该居中于主舞台,但它却居中于MovieClip而不是主舞台。
以下是代码:
//Centers and places image right ondo the display board
function fullLoaded(e:Event):void {
    var myFull:Loader = Loader(e.target.loader);
    addChild(myFull);

    //positioning
    myFull.x = (stage.stageWidth - myFull.width) / 2;
    myFull.y = (stage.stageHeight - myFull.height) /2;

    //register the remove function
    myFull.addEventListener(MouseEvent.CLICK, removeFull);

    new Tween(myFull, "alpha", Strong.easeInOut,0,1,0.5,true);
}

我已经尝试过所有这些组合,但都没有成功:

MovieClip(root).stage.stageWidth  
root.stage.stageWidth  
parent.stage.stageWidth

这些都没有将图片放在正确的位置。


你好,你有检查过 stage.align 属性吗? - OXMO456
是的,我也尝试过了,但没有成功 :( - Ryan Rohrer
2个回答

4

设置以下属性可以使您的舞台原点(0x0)位于左上角:

stage.align = StageAlign.TOP_LEFT;

为了让舞台保持与窗口大小相同的比例,需要进行以下操作:

stage.scaleMode = StageScaleMode.NO_SCALE;

在对图片进行对齐之前,您需要等待图片加载完成,因为在此之前它没有宽度。我还建议您监听舞台上的Event.RESIZE事件,每当大小改变时就会触发该事件。

假设您的当前代码应该正常工作!

myFull.x = (stage.stageWidth - myFull.width) / 2;
myFull.y = (stage.stageHeight - myFull.height) /2;

不过它不起作用,因为它返回包含 MovieClip 的大小,而不是主舞台!:( - Ryan Rohrer
stage.stageWidth 给出舞台的宽度,我确信没错。 如果你得到了奇怪的值,尝试添加监听器。 - grapefrukt
此外,myFull位置显然与其父级的x位置有关。 - grapefrukt

0

MovieClip(root).addChild(myFull); 别忘了对removeChild做同样的操作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接