Форум 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=91301)

funkyDevil 29.01.2007 20:44

область видимости
 
К примеру у меня вот такой класс:

Код:

class MyClass(){

  private myTween:Tween;
  private myObject:Object;
 
  public function MyClass()
  {
    myTween = new Tween(бла-бла-бла);
    myTween.onMotionFinished = function()
    {
          trace(myObject);
    }
  }
}

В результате trace выводит undefined. Т.е. переменные моего класса изнутри обработчика onMotionFinished не видать. А надо.
Объясните, плиз, как в таком случае быть?

etc 29.01.2007 21:00

Скобки в первой строке лишние. Плюс необходим импорт класса Tween. Плюс внутри функции область видимости другая, нужно использовать Delegate.

silin 29.01.2007 21:25

если нужен доступ к объекту,который твиним, можно без делегирования обойтись: ссылка на него в свойстве obj твина хранится:
Код:

myTween.onMotionFinished = function()
{
  trace(this.obj);
}


etc 30.01.2007 00:06

Описывать метод в методе как-то криво совершенно :)

silin 30.01.2007 00:39

криво смотрится, ты хотел сказать?
можно подумать что c помощью Delegate прямее..:)
хотя удобнее, спору нет..

etc 30.01.2007 01:17

Delegate хотя бы не изменяет область видимости лишний раз. И FDT спокоен.

funkyDevil 30.01.2007 13:12

delegate значит говорите....буду капать в этом направлении. Спасибо за наводку :)

etc 30.01.2007 13:44

Цитата:

Сообщение от silin
криво смотрится, ты хотел сказать?

Не только, объявление методов внутри другого противоречит ООП. Delegate в купе с EventDispatcher в AS2 приближают к реализации подобного в AS3.

funkyDevil 30.01.2007 14:32

С delegate разобрался и пожалел, что не наткнулся на него раньше :)

Назрел вопросик о ругани FDT.

к примеру есть такой вот код:
Код:

var myClip1:MovieClip;
_root.createEmptyMovieClip("myClip1",1000);
_root.myClip1.createEmptyMovieClip("myClip2",1000);
_root.myClip1.myClip2.onPress = function(){бла-бла-бла}

Дык вот када я описываю обработчик onPress, то FDT ругается на то, что он не знает что такое myClip2. Это вообщем-то естественно, учитывая, что в var я его не прописывал.
Конструкцию var myClip1.myClip2:MovieClip флэш не понимает.
Может есть какие-нибудь другие способы успокоить FDT?

silin 30.01.2007 14:43

myClip1 должен быть не MovieClip, а к примеру MyClip1 extends MovieClip
тогда свойство myClip2:MovieClip он сможет иметь на законных основаниях..

а успокоить можно и Flex2, тока я не буду здесь об этом, а то _etc сильно ругается...:)


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

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