AS3 Flash вызывает основную временную шкалу из фрагмента ролика внутри фрагмента ролика - PullRequest
2 голосов
/ 16 августа 2011

Я просматривал похожие вопросы на этом сайте и не могу найти решение, поэтому вот моя проблема:

У меня есть функция сохранения, которая сохраняет некоторые данные. Эта функция находится в одном мувиклипе в другом мувиклипе. После сохранения я хочу перейти на AndStop (1) основной временной шкалы, а не текущий вложенный ... кто-нибудь может помочь?

Ниже приведен код:

function save()
{

    var oldname:String = so.data.username;
    so.data.username = oldname + tf.text + " " + nf.text + "\n";
    tf.text = "";
    nf.text = ""; // resets textfields
    so.flush(); // writes changes to disk
    trace("Saved");
    gotoAndStop(1);  <<----this must goto frame 1 of the main time line??
}

Это AS3. В AS2 я имел обыкновение вызывать _root. или _parent. и это будет работать нормально, но теперь выдает ошибку компилятора. Stage.gotoAndStop (1); также не работает ...

Ценю любую помощь, заранее спасибо Любен

Ответы [ 3 ]

5 голосов
/ 16 августа 2011

Вы можете получить доступ к самому верхнему DisplayObject, используя root. Поскольку DisplayObject не имеет метода gotoAndStop(), попытка root.gotoAndStop() приведет к:

1061: вызов возможно неопределенного метода gotoAndStop через ссылку со статическим типом flash.display: DisplayObject.

Однако вы можете typecast root до MovieClip 1 , который предоставит к нему доступ:

MovieClip(root).gotoAndStop(1); // or:
(root as MovieClip).gotoAndStop(1);

Typecasting к MovieClip также позволит вам получить доступ к пользовательским свойствам и функциям на главной временной шкале - это потому, что MovieClips имеют значение dynamic, которое снимает ограничения во время компиляции относительно того, какие свойства и методы вам разрешен доступ к объекту.


1 За исключением случаев, когда у вас есть класс документа, который наследует Sprite вместо MovieClip.

1 голос
/ 16 августа 2011

Я мало занимаюсь кодированием на временной шкале Flash (и предлагаю начать изучать использование внешних определений классов через корень документа, если ваше приложение даже средней сложности);но следующее предложение все равно должно оставаться верным.

В AS3 событиям, отправляемым в список отображения, может быть присвоено свойство bubbles, установленное в значение true, что приведет к образованию пузырьков событий.Включив всплывающее окно событий, вы можете прослушивать еще более высокие значения в списке отображения, следующая статья отлично объясняет это демонстрацией, с которой вы можете играть.

В вашем приложениидавайте предположим, что у вас есть два «блока» действий: определение функции save и определение функции main:

Main

// Add an event listener, when we hear a 'SaveEvent' we will call
// the onSaveEvent function.
addEventListener("SaveEvent", onSaveEvent);

// This function is called when we hear a 'SaveEvent'.
function onSaveEvent(event : Event) : void {
    trace("Main heard event: " + event.type);

    // We can now instruct our Main Timeline.
    gotoAndStop(1);
}

Сохранить

// Perform your save operation as before...
so.flush(); // writes changes to disk
trace("Saved");

// Now dispatch an Event, make sure we set it to bubble.
var bubbles : Boolean = true;
dispatchEvent(new Event("SaveEvent", bubbles));
0 голосов
/ 25 марта 2012

// Следовательно, вы можете перейти к первому кадру вашей Сцены 1

MovieClip(root).gotoAndStop(1, "Scene 1");
...