Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Навигация внутри сцены (синтаксис) (http://www.flasher.ru/forum/showthread.php?t=140034)

serdeles 18.05.2010 15:02

Навигация внутри сцены (синтаксис)
 
Вложений: 1
Дано:

1)Сцена
2)мувик button (выполняет функцию кнопки — так же как и его копии с разными именами: button1, button2 и т. д.)
3)mc2 (контейнер — туда вложен мувик с анимацией), а копии контейнера под разными именами лежат на Сцене
4)mc3 (мувик с анимацией, который надо приводить в движение, нажав на button).

Вопрос: как указать мувику button, где находятся мувик mc3?

Этот код не работает, поскольку mc3 находится не на сцене, а вложен в mc2.

Код AS1/AS2:

button.onRelease = function() {
        mc3.gotoAndPlay(1);
 
var arr:Array = [mc4, mc5, mc6]
for (var i:Number = 0;i<arr.length;i++){
        var mc:MovieClip = arr[i]
        mc.onEnterFrame = function()
        {
                if (this._currentframe == 49)
                {
                        delete this.onEnterFrame;
                }
 
                else
                {
                        this.prevFrame();
                }
        };
};
 
}

Приложу исходник. По сути, код там тот же, но мувики имеют другие имена (button = rec, mc2 = circle, mc3 = tube).

Кстати, тоже непонятный момент: на сцене копии circle имеют разные псевдонимы, но tube внутри circle только один. Как выйти из положения в такой ситуации?

in4core 18.05.2010 15:26

Код AS1/AS2:

button.onRelease = function() {
        mc2.mc3.gotoAndPlay(1);
 
var arr:Array = [mc4, mc5, mc6]
for (var i:Number = 0;i<arr.length;i++){
        var mc:MovieClip = arr[i]
        mc.onEnterFrame = function()
        {
                if (this._currentframe == 49)
                {
                        delete this.onEnterFrame;
                }
 
                else
                {
                        this.prevFrame();
                }
        };
};
 
}


lexa2000lexa 18.05.2010 15:34

Код AS1/AS2:

var arr:Array = [circle1, circle2, circle3, circle4, circle5, circle6]
for(var i:Number = 0;i<arr.length;i++){
        var but:MovieClip = this["rec"+(i+1)];
        but.id = i
        but.onRelease = function() {
                arr[this.id].tube.play();
                for(var j:Number = 0;j<arr.length;j++){
                        if(j!=this.id){
                                var circle:MovieClip = arr[j].tube;
                                if(circle._currentframe >49){
                                        circle.onEnterFrame = function() {
                                                if(this._currentframe!=50){
                                                        this.prevFrame()
                                                } else {
                                                        delete this.onEnterFrame;
                                                }
                                        }
                                }
                        }
                }
        }
}


serdeles 18.05.2010 16:26

lexa2000lexa, спасибо! Именно то, что требовалось!
in4core, спасибо, код работает, но в данной ситуации код Лехи подошёл вообще идеально.


Часовой пояс GMT +4, время: 21:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.