有没有办法在舞台上移动或缩放一堆动画片段,而不将它们放在另一个动画片段中?
Thanx:)
答案 0 :(得分:0)
编辑:
如果您正在收听resize事件,可以使用一些属性,我假设您的stage.scaleMode属性设置为NO_SCALE ...
您可以通过将最大尺寸值设置为Capabilities.screenResolutionX和Capabilities.screenResolutionY来设置比率1,它将为您提供用户的最大屏幕尺寸。请注意,这些尺寸对应于全屏尺寸,例如未考虑浏览器工具栏。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Capabilities.html
然后,您可以通过将当前舞台宽度/高度与最大设置进行比较来计算影片剪辑的当前比例。
const MAX_WIDTH:int = Capabilities.screenResolutionX;
const MAX_HEIGHT:int = Capabilities.screenResolutionY;
//These values should be updated in your resize event listener
//For a pure AS3 project, I usually use Javascript functions
//to get a window dimensions
var currentWidth;
var currentHeight;
var widthScale:Number = currentWidth / MAX_WIDTH;
var heightScale:Number = currentHeight / MAX_HEIGHT;
最后,将stage.scaleMode属性设置为EXACT_FIT会不会更简单?
编辑结束
将您的MovieClip放入数组并循环通过数组进行修改,如果每个MovieClip需要进行特定修改,请创建一个将存储MovieClip的对象数组以及修改参数。
var mc1:MovieClip = new MovieClip();
var mc2:MovieClip = new MovieClip();
//etc...
var mcn:MovieClip = new MovieClip();
// you could also use a Vector
var mcs:Array = [mc1 , mc2 , .... , mcn];
var scale:Number = .6;
for( var i:int ; i < mcs.length ; ++i )
{
mcs[i].scaleX = widthScale
mcs[i].scaleY = heightScale;
}
如果您为MovieClip使用Class,您将创建一个特定的方法来修改它们,但您仍然需要通过MovieClip循环来设置修改
var mc1:MovieClip = new Example();
var mc2:MovieClip = new Example();
//etc...
public class Example extends MovieClip
{
public function modify(params:Object):void
{
this.scaleX = params.scaleX;
this.scaleY = params.scaleY;
//or for example
TweenMax.to( this , params.delay , {scaleX:params.scaleX ,
scaleY:params.scaleY , ease:params.ease} );
}
}
for( var i:int ; i < mcs.length ; ++i )
mcs[i].modify({scaleX:.5 , scaleY:.6 , delay:1 , ease:Quad.easeOut});