Изменить несколько видеоклипов как один - PullRequest
0 голосов
/ 08 ноября 2010

Есть ли способ переместить или масштабировать несколько клипов на сцене как один, не помещая их в другой видеоклип?

Спасибо:)

1 Ответ

0 голосов
/ 08 ноября 2010

Редактировать:

Если вы слушаете событие изменения размера, вы можете использовать несколько свойств, я предполагаю, что для свойства stage.scaleMode установлено значение NO_SCALE ...

Вы можете установить соотношение 1, установив в качестве значения максимального размера значения Capabilities.screenResolutionX и Capabilities.screenResolutionY, которые предоставят вам максимальные размеры экрана пользователя.Обратите внимание, что эти размеры соответствуют полноэкранным размерам, например, без учета панели инструментов браузера.

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?

Конец редактирования

Поместить мувиклипы в массив и циклчерез массив для их изменения, если для каждого мувиклипа требуется определенная модификация, создайте массив объектов, в котором будет храниться мувиклип, а также параметры модификаций.

 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;
 }

Если вы используете класс для своих мувиклипов,вы бы создали конкретный метод для их изменения, но вам все равно придется циклически проходить мувиклипы, чтобы установить модификацию

 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});
...