Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Привязка событий к экземпляру класса (http://www.flasher.ru/forum/showthread.php?t=71332)

Ryumkin 02.11.2005 17:13

Привязка событий к экземпляру класса
 
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

Ryumkin 03.11.2005 00:09

Цитата:

Сообщение от kpa.person
Либо зарегистрировать мувик как экземпляр класса
Object.registerClass(idOfSymbolFromLibrary, theClass);

А можно поподробнее? А то я уже задолбался: наследую мувиклип, потом оказывается, что он автономный и нельзя ничего вызвать и передать параметры...

7thsky™ 03.11.2005 00:32

ЛЮБОЙ объект можно подписать на события мыши простым способой

Код:

var obj = new Object ();
obj.onMouseMove = function () {
trace ('move');
}

Mouse.addListener (obj);

то же самое и с классами, просто в конструкторе пропиши
Mouse.addListener (this);

Потом ты задаешь уже второй раз один и тот же вопрос.

mc.onRollOver = Delegate.create (this, __onRollOver);

Ryumkin 03.11.2005 12:42

Большущее спасибо!!!
И последний вопросик - как убить делегата? :)

Ryumkin 03.11.2005 12:46

я делаю так = 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);

Смотрим ролловер в оутпуте.


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

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