Форум 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)
-   -   attachMovie и затем запуск? (http://www.flasher.ru/forum/showthread.php?t=128389)

sy555 06.08.2009 19:03

attachMovie и затем запуск?
 
Добрый день!.

Как добавить клип на сцену и затем запустить его ?

Код AS1/AS2:

on(press) //по нажатию добавляем клип
{
        if( flag_con==true)
        {
                if(_root.but.attachMovie("con", "contakts1", this.getNextHighestDepth(), {_x:100, _y:100}))
                {
                _root.but.contakts1.gotoAndPlay(3);
                flag_con=false;
        }
        }
        else
        {
                trace("buzy");
 }
 
}

Так не работает, клип добавляет но запускает его не успевает?

Zik. 06.08.2009 19:31

Код AS1/AS2:

var flag:Boolean = true;
but1.onPress = function():Void {
    if (flag) {
        mc = _root.but.attachMovie("con", "contakts1", this.getNextHighestDepth(), {_x:100, _y:100})
        mc.gotoAndPlay(3);
        flag = false;
    } else {
        trace("buzy");
    }
}


Xero201 06.08.2009 19:36

Присоединяюсь к вопросу. Этот attachMovie вообще какой-то неуловимый Джо(.
Пока в таких случаях пользуюсь чем-то вроде:
Код AS1/AS2:

interval=10;//время в милисекундах (по ситуации и вкусу)
idd=setInterval(
function () {
if(_root.but.contakts1 != undefined){
clearInterval(idd);
_root.but.contakts1.gotoAndPlay(3);
flag_con=false;
}
}
,interval);

Поэтому тоже не прочь узнать граммотное решение

to ZIK68:
дело не в том, что код записан не "по-научному", а в том, что команда "mc.gotoAndPlay(3);" происходит раньше чем выполняется attachMovie(), хоть мне кто-то и говорил что аттач - последовательная процедура.

Zik. 06.08.2009 19:49

протестил свой код - все работает отлично.

Xero201 06.08.2009 20:23

Вложений: 1
Цитата:

Сообщение от ZIK68 (Сообщение 841009)
протестил свой код - все работает отлично.

Хм..
Ну если не затруднит, то протестируй, пожалуйста и мой пример.
Есть клип (clip_mc) с одним кадром. В этом кадре есть переменная (id=1).
Сразу после добавления клипа (attachMovie), производиться попытка считать это самое id = выводит undefined. Когда тоже самое делается при нажатии на клип - все хорошо.
В чем дело?

Zik. 06.08.2009 20:40

Ну... у меня таких проблем не бывает, потому что я никогда не пишу переменные в клипах, а задаю их на корневой диаграмме.
то есть так:
Код AS1/AS2:

mc = _root.attachMovie("clip_mc","clip_mc",100);
mc.id = 1
trace("Сразу после attachMovie() > "+mc.id)
clip_mc.onPress = function(){trace("По нажатию на клип > "+clip_mc.id);}

безупречно работает.

ну, а в твоем случае я сделал так:
Код AS1/AS2:

mc = _root.attachMovie("clip_mc","clip_mc",100);
mc.onEnterFrame = function () {
        if(this.id != undefined) {
                trace("Сразу после attachMovie() > "+mc.id)
                delete this.onEnterFrame;
        }
}
clip_mc.onPress = function(){trace("По нажатию на клип > "+clip_mc.id);}

это будет быстрее твоих setInterval'ов

sy555 06.08.2009 21:21

Спасибо , надо начинать писать аккуратнее, идея с таймером работает, вопрос решен.

Xero201 06.08.2009 21:21

Точняк, спасибо)
Твои действия хороши если это один кадр и одна переменная.
А как быть, если в клипе например 100 кадров и в каждом из них по 10 переменных (типо таблицы Менделеева)? Конечно, можно скопировать все эти переменные в ассоциативный массив, но тогда его надо будет менять каждый раз, когда поменяются переменные в кадрах клипа. И если, например, чел, который делает этот клип, заметит опечатки, исправит и никому ничего не скажет, то значения массива будут неверными, а постоянно перепроверять тоже не интересно(((

Zik. 06.08.2009 21:40

а что мешает брать эти значения из массива и вставлять в таблицу?
тогда ничего перепроверять не надо
еще, на мой взгляд, объявлять перменные в клипе не рационально.
лучше прописывать свойства этому клипу, как я сделал в первом коде
Код AS1/AS2:

mc.id = 1;


Xero201 06.08.2009 22:01

Ну да, можно. Но это если так делать изначально. А если это большой (но кривой) проект, где таблица используется во многих местах, а не в одном мувике. То придеться много чего менять, а так же уговаривать всех это делать. Конечно, разработчики флэша не обязаны давать инструменты для кривых методов, но ведь переменные в клипах могут, наверное, располагаться и по умесному поводу, а раз так, нужно знать когда они проинициализируются при аттаче.
ЗЫ.
А разве свойство клипа и переменная внутри него не одно и тоже? Вызываются по крайней мере одинаково.


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

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