Просмотр полной версии : пара вопросов по обработчикам событий
1. Как работает MC.onLoad ?
Приведите, пожалуйста, рабочий пример, а то что-то ничего не получается...
2. Как обратиться к клипу-родителю из
this.mybutton.onRelease = function ()
{
//...
}
Просто _parent-ом вроде не получается...
1. Как работает MC.onLoad ?
Нормально работает.
Только видимо, когда ты присваеваешь обработчик, данного клипа еще нет, либо он уже есть (т.е. уже лоад :)).
Попробуй так:
MovieClip.prototype.onLoad = function () {trace("Hi!");}
Только сие будет срабатывать для всех клипов.
2. Как обратиться к клипу-родителю из
this.mybutton.onRelease = function ()
{
//...
}
this.
Nox Noctis
31.07.2003, 22:21
MovieClip.onLoad не будет работать если ты сначала создашь кдип а потом присобачишь это действие...
онЛоад должен быть определен ДО инициализации клипа.
если писать onClipEvent (load) {} - то так автоматически получится... а если пользоваться MovieClip.onLoad - то единственный способ заставить его сработать - это написать его в прототип класса к которому принадлежит клип.
исключение составляет клип _root :) если в первом кадре написать _root.onLoad то оно сработает.
насчет второго:
this._parent
_____
не успел :)
2Nox Noctis
MovieClip.onLoad не будет работать если ты сначала создашь кдип а потом присобачишь это действие...
А можно как-то так (если можно, то переведи этот псевдокод в реальный, плз):
1. записать в прототип MovieClip-a этот событий;
2. создать мувиклип;
3. убрать из прототипа MovieClip-a это событиЁ;
насчет второго:
this._parent
Спасибо! :)
Pietrovich
01.08.2003, 09:25
MovieClip.onLoad - то единственный способ заставить его сработать - это написать его в прототип класса к которому принадлежит клип.
если писать через прототип класа, то получается что событие одинаковое для всех клипов из класса, а мне иногда бывает нужно чето подкорректировать...
поэтому я просто создаю в той-же линейке клип_загрузчик, который на энтерФрейме следит за процессом загрузки подопечного, делает все что нужно и самоубивается...
Пример, опять же из хелпа:
// define a class
function myClipClass() {}
// inherit from MovieClip class
myClipClass.prototype = new MovieClip();
// define event handler methods for myClipClass class
myClipClass.prototype.onLoad = function() {trace ("movie clip loaded");}
// register class
Object.registerClass("theID", myClipClass);
_root.attachMovie("theID","myName",1);
// Attach MC with ID "myclipID" from Library
_root.attachMovie("myclipID","ablue2",3);
Пушистик
01.08.2003, 12:49
если писать через прототип класа, то получается что событие одинаковое для всех клипов из класса, а мне иногда бывает нужно чето подкорректировать...
[/B]
MovieClip.prototype.onLoad = function() {
if (this._name="mc") {
// actionscript tut!
}
};
Pietrovich
01.08.2003, 13:13
2Пушистик
а смысл ифы плодить? да и когда кодиш лениво каждый раз к прототипу скролиться чтобы иф вписать...
легче прямо в прототип мувиклипа вписать функцию myloadMovie и событие myOnLoad и ими пользоваться....
т.е. myloadMovie создает прелоадер, и стартует стандартную загрузку, а потом прелоадер вызывает myOnLoad после чего самоуничтожается...
З.Ы. вот щыс вожусь с презентацией, дык там дохренища чего грузится... а ты после загрузки каждого из них предлагаеш прибежаться по всем ифам, которых кстати тоже дохрена... нехарашо... подтормаживать может...
Nox Noctis
01.08.2003, 14:37
Оригинал написал(а) Pietrovich
получается что событие одинаковоезначит надо сделать так чтобы не получалось :)
я говорю о теории а не о практике...
сам уже не помню когду онЛоадом пользовался последний раз...
MovieClip.onLoad многими разработчиками вообще не рекомендуется пользоваться, т.к. сама макромедия признала, что у нее именно с этим обработчиком баг (it is broken). И вообще swf подгружает достаточно корректно все , кроме самих же swf'ов. Так что либо onClipEvent(load), либо отслеживайте MovieClip.getBytesLoaded()/MC.getBytesTotal.
Всем удачи!
Pietrovich
01.08.2003, 15:28
MovieClip.getBytesLoaded()/MC.getBytesTotal
дык так и выкручиваемся ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.