Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Не срабатывает обработчик события :(
Flash Zone Forum > Macromedia Flash > ActionScript
sad1st
Код
_root.createEmptyMovieClip( 'newMovie', 0 );
_root['newMovie'].onData = function() {
   // some code...
}
_root['newMovie'].loadMovie("load.swf");


Так вот проблема в том что не срабатывает обработчик события... dry.gif
Rohan
You can use this handler only with the MovieClip.loadVariables() method or the loadVariables() global function. If you want an event handler to be invoked with MovieClip.loadMovie() method or the loadMovie() function, you must use onClipEvent(data) instead of this handler.
tiHo
незнаю что там Рохан написал, наверно суровую правду smile.gif

попробуй напиши без квадратных скобок:

Код
_root.createEmptyMovieClip( 'newMovie', 0 );
_root.newMovie.onData = function() {
   // some code...
}
_root.newMovie.loadMovie("load.swf");


а если так неполучится, то onData замени на onLoad

а если так неполучится, то я умываю руки smile.gif
MustLive
Цитата
попробуй напиши без квадратных скобок:

Саня, с квадратными скобками тоже можна писать (это один из допустимых синтаксисов). Хотя и менее привычный, чем без квадратных скобок - и ты и я и также много других флешеров обычно пишут без них (стандартным способом). Без скобок, как по мне, лаконичней и элегантней код получается (и его набор ускоряется, т.к. используется лишь "точка" разделитель).

Ну а Рохан написал то что нужно было сделать - прочитать хелп. Чтобы знать, что в данном случае подобные обработчики не используются.

И Рохан процитировал нужный абзац их Хелпа, на который sad1st нужно обратить внимание, чтобы добится желаемой функциональности - чтобы обработчик сработал. Для MovieClip.loadMovie() и loadMovie() нужно использовать onClipEvent(data). И всё будет работать как нужно.
nikitar
Цитата
onClipEvent(data).

Мы про какой flash говорим?
Этот метод уже признаётся устаревшим, так как сейчас все на ООП переходят.
sad1st
Код
MovieClip.onData
Цитата
Синтаксис

myMovieClip.onData
Параметры

Нет.

Возвращает

Ничего.

Описание

Обработчик события, наступает при получении данных, вызванных методами loadVariables или loadMovie .

Вы должны определить функцию, которая выполнится по наступлению этого события.

Пример

Следующий пример определяет функцию для метода onData, которая выведет сообщение onData called в окно Output:

myMovieClip.onData = function () {
trace ("onData called");
};


Вот так вот...
На сколько я понял не срабатывает он потому что, все свойсвойства програмно созданого клипа (в данном случае
Код
_root.createEmptyMovieClip( 'newMovie', 0 );
) обнуляются... Тоесть свойство onData тоже обнуляется...

И вот теперь вопрос переростает плавно... В то... как этого избежать =)

Цитата
Мы про какой flash говорим?

Про 8-ой!
nikitar
Слушай так у тебя всё банально smile.gif
Сначала ты создаёшь мувиклип, в него грузишь другой.
Так почему же у тебя проверка на загрузку идёт перед тем как ты сам клип загружаешь?
Сначала нужно создать мувиклип, потом в него загрузить, потом уже проверку поставить.
И попробуй на всякий случай вместо onData, onLoad - мне кажется это более приемлемо.
sad1st
Цитата(nikitar @ 23.11.2006 - 13:24) *
Слушай так у тебя всё банально smile.gif
Сначала ты создаёшь мувиклип, в него грузишь другой.
Так почему же у тебя проверка на загрузку идёт перед тем как ты сам клип загружаешь?
Сначала нужно создать мувиклип, потом в него загрузить, потом уже проверку поставить.
И попробуй на всякий случай вместо onData, onLoad - мне кажется это более приемлемо.


Где у меня там проверка?.... Помоему я цепляю фунцию на обработчик события... так что пофиг где я её напишу... она должна сработать когда мувик подгрузится....
Но проблема в том, что при подгрузке все свойства как и обработчики событий обнуляются!
Rohan
Ну а че ты хотел???
Код
Using event handlers with MovieClip.loadMovie() can be unpredictable. If you attach an event handler to a button by using on(), or if you create a dynamic handler by using an event handler method such as MovieClip.onPress(), and then you call loadMovie(), the event handler does not remain after the new content is loaded. However, if you attach an event handler to a movie clip by using onClipEvent() or on(), and then call loadMovie() on that movie clip, the event handler remains after the new content is loaded.

я ж писал уже об этом - можешь воспользоваться onClipEvent если тебе очень надо, но я бы не советовал - лучше делай так:
Код
_root.createEmptyMovieClip( 'newMovie', 0 );
var dataListener:Object = {};
dataListener.onLoadStart = function(mc:MovieClip){
    trace("loading to "+mc+" started...");
}
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(dataListener);
mcLoader.loadClip("anim.swf",_root["newMovie"]);
Русская версия IP.Board © 2001-2009 IPS, Inc.