Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   пара вопросов по обработчикам событий (http://www.flasher.ru/forum/showthread.php?t=47485)

metton 31.07.2003 22:05

пара вопросов по обработчикам событий
 
1. Как работает MC.onLoad ?
Приведите, пожалуйста, рабочий пример, а то что-то ничего не получается...


2. Как обратиться к клипу-родителю из
this.mybutton.onRelease = function ()
{
//...
}
Просто _parent-ом вроде не получается...

^VoM^ 31.07.2003 22:20

Re: пара вопросов по обработчикам событий
 
Цитата:

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

_____
не успел :)

metton 01.08.2003 03:39

2Nox Noctis
Цитата:

MovieClip.onLoad не будет работать если ты сначала создашь кдип а потом присобачишь это действие...
А можно как-то так (если можно, то переведи этот псевдокод в реальный, плз):

1. записать в прототип MovieClip-a этот событий;
2. создать мувиклип;
3. убрать из прототипа MovieClip-a это событиЁ;


Цитата:

насчет второго:
this._parent
Спасибо! :)

Pietrovich 01.08.2003 09:25

Цитата:

MovieClip.onLoad - то единственный способ заставить его сработать - это написать его в прототип класса к которому принадлежит клип.

если писать через прототип класа, то получается что событие одинаковое для всех клипов из класса, а мне иногда бывает нужно чето подкорректировать...
поэтому я просто создаю в той-же линейке клип_загрузчик, который на энтерФрейме следит за процессом загрузки подопечного, делает все что нужно и самоубивается...

^VoM^ 01.08.2003 10:49

Пример, опять же из хелпа:
Код:

// 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
получается что событие одинаковое
значит надо сделать так чтобы не получалось :)

я говорю о теории а не о практике...
сам уже не помню когду онЛоадом пользовался последний раз...

Sh@man 01.08.2003 14:44

MovieClip.onLoad многими разработчиками вообще не рекомендуется пользоваться, т.к. сама макромедия признала, что у нее именно с этим обработчиком баг (it is broken). И вообще swf подгружает достаточно корректно все , кроме самих же swf'ов. Так что либо onClipEvent(load), либо отслеживайте MovieClip.getBytesLoaded()/MC.getBytesTotal.
Всем удачи!


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

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