Как я могу случайно вызвать мувиклип? - PullRequest
0 голосов
/ 19 марта 2012

На моей сцене 3 мувиклипа: mc1, mc2 и mc3.

каждый из них теперь имеет альфа = 0.

У меня тоже есть кнопка на сцене, и когда я нажимаю на нее,1 мувиклип будет изменен на альфа = 1.

вот мой сценарий:

var mcArray:Array = [mc1,mc2,mc3];
for (var j:int = 0; j < hotSpot.length; j++)
{
    mcArray[j].alpha=0;
}

revealBtn.buttonMode = true;
    revealBtn.useHandCursor = false;
    revealBtn.addEventListener(MouseEvent.CLICK, revealClick);
function revealClick(event:MouseEvent):void
{
//what i need to write here?
}

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Расширяя мой комментарий к вопросу, вот что вы будете делать шаг за шагом:

//Generate random number (integer) between 0 and mcArray.length
var i:Number=Math.floor(Math.random() * mcArray.length);

//Select ith element of mcArray
var movieClipToEdit:MovieClip=mcArray[i] as MovieClip;

//Change its alpha to 1
movieClipToEdit.alpha=1;

Если вы хотите скрыть все остальные фрагменты ролика, добавьте:

for (var j:int = 0; j < mcArray.length; j++) {
    mcArray[j].alpha=0;
}
0 голосов
/ 19 марта 2012

Вот пример, показывающий, как отобразить случайный экранный объект после щелчка по сцене:

Main.as (класс документа) :

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class Main extends Sprite 
    {
        private var _sprites:Vector.<Sprite>;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            _sprites = new Vector.<Sprite>();

            for (var i:int = 0; i < 3; i++)
            {
                var sprite:Sprite = new Sprite();
                sprite.graphics.beginFill(0xFF0000);
                sprite.graphics.drawRect(0, 0, 100, 100);
                sprite.graphics.endFill();
                sprite.x = ((sprite.width + 50) * i);
                sprite.y = 0;
                addChild(sprite);

                _sprites.push(sprite);

            }// end for

            hideSprites();

            stage.addEventListener(MouseEvent.CLICK, onClick);

        }// end function

        private function onClick(e:MouseEvent):void
        {
            showSprite();

        }// end function

        private function showSprite():void
        {
            hideSprites();

            (_sprites[random(0, 2)] as Sprite).alpha = 1;

        }// end function

        private function hideSprites():void
        {
            for each(var sprite:Sprite in _sprites)
            {
                sprite.alpha = 0;

            }// end for each

        }// end function

        private function random(min:int, max:int):int
        {
            return (Math.floor(Math.random() * (1 + max - min)) +min); 

        }// end function

    }// end class

}// end package

Простоположим, вы используете Math.round() для получения случайного индекса для вашего массива экранных объектов, в этом примере, который происходит здесь:

(_sprites[random(0, 2)] as Sprite).alpha = 1;

private function random(min:int, max:int):int
{
    return (Math.floor(Math.random() * (1 + max - min)) +min); 

}// end function

Вы также можете заменить значение для аргумента random() метода *1012* методас _sprites.length - 1, который также вернет 2.

...