Просмотр полной версии : Привязка событий к экземпляру класса
class MyClass
{
var mc:MovieClip;
var a = 5;
function MyClass()
{
mc = ....
mc.onMouseOver = this.onMouseOver;
}
function onMouseOver()
{
trace(this.a);
}
}
выводит undefined... как мне нормально привязать это событие к классу?
kpa.person
02.11.2005, 18:08
Функция onMouseOver работает в области mc, который не имеет св-ва
"a". Поэтому оно undefined. Тебе нужно указать корректную область видимости:
class MyClass
{
var mc:MovieClip;
var a = 5;
function MyClass()
{
mc = ....
mc.scope = this;
mc.onMouseOver = this.onMouseOver;
}
function onMouseOver()
{
//trace(this.a);
trace(this.scope.a);
}
}
Либо зарегистрировать мувик как экземпляр класса
Object.registerClass(idOfSymbolFromLibrary, theClass);
Либо использовать ф-цию Iv-a:
http://proto.layer51.com/d.aspx?f=1334
Либо зарегистрировать мувик как экземпляр класса
Object.registerClass(idOfSymbolFromLibrary, theClass);
А можно поподробнее? А то я уже задолбался: наследую мувиклип, потом оказывается, что он автономный и нельзя ничего вызвать и передать параметры...
ЛЮБОЙ объект можно подписать на события мыши простым способой
var obj = new Object ();
obj.onMouseMove = function () {
trace ('move');
}
Mouse.addListener (obj);
то же самое и с классами, просто в конструкторе пропиши
Mouse.addListener (this);
Потом ты задаешь уже второй раз один и тот же вопрос.
mc.onRollOver = Delegate.create (this, __onRollOver);
Большущее спасибо!!!
И последний вопросик - как убить делегата? :)
я делаю так = null, так можно?
kpa.person
03.11.2005, 21:33
файл MyClass.as
class MyClass extends MovieClip {
public function onRollOver(){
trace("onRollOver");
}
}
В fla в либе должен быть символ с linkage id - "myMC".
В _root:
import MyClass;
Object.registerClass("myMC", MyClass);
this.attachMovie("myMC", "newMyMC", 1);
Смотрим ролловер в оутпуте.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.