我想在舞台大小调整中将一个大的电影剪辑(1400像素宽)放在我的舞台上。这个大影片剪辑在某些事件中向右移动,所以我不能使用这样的代码:
currentPage.x = ((stage.stageWidth/2) - (currentPage.width/2))
有没有办法可以使用从0开始的偏移(舞台'视口'的左侧)并使用偏移量来居中?
动画片段仅在x中发生变化。
答案 0 :(得分:0)
调整对象大小时,我们可以说它的比例已经改变。秤很好,因为它们允许我们以百分比工作。给定任何百分比变化,我们可以将相同的变化应用于任何其他对象以获得相对位置。看这里:
var previousStageWidth:Number;
public function handleResize():void {
//calculate the difference in stage with as a percentage
var widthScale:Number = previousStageWidth / stage.stageWidth;
//scale the x value by the same amount
myDisplayObject.x *= widthScale;
//update the previous value for the next resize
previousStageWidth = stage.stageWidth;
}
希望这对你有用。
答案 1 :(得分:0)
我更喜欢为所有内容制作容器精灵。在容器内部,一切都被测量为好像场景总是400x300(或任何其他固定大小,无论你需要什么样的宽高比)。当场景调整大小时,我正在调整大小并仅使容器居中以适应内部:
//not really tested because my real code is more complex, so watch out...
var bounds:Rectangle = container.getRect(null);
//scale factor to fit inside
var scaleFactor:Number = Math.min(stage.stageWidth / bounds.width, stage.stageHeight / bound.height);
container.scaleX = container.scaleY = scaleFactor; //scaling
//centering
container.x = (stage.stageWidth - container.width) * 0.5;
container.y = (stage.stageHeight - container.height) * 0.5;
这样您就可以处理容器中的任意数量的剪辑,而不仅仅是一个。容器不使用所有屏幕空间,但保留纵横比。如果你想使用所有的屏幕空间,你必须考虑舞台的动态布局 - 只有你可以正常做的事情。