Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как получить переменную внутри функции обработчика события? (http://www.flasher.ru/forum/showthread.php?t=127225)

iNils 08.07.2009 15:13

А я еще раз повторю
Цитата:

Класс Timer не динамический, поэтому "расширять" экземпляры нельзя.

vvvvvvf 08.07.2009 15:19

Цитата:

Сообщение от iNils (Сообщение 833962)
А я еще раз повторю: Класс Timer не динамический, поэтому "расширять" экземпляры нельзя.

Хорошо тут понятно, тогда исходя из кода в 10 посте как можно обратиться к переменной i не создавая новый класс?

iNils 08.07.2009 15:28

wvxvw идею кинул с Dictionary

vvvvvvf 08.07.2009 15:38

Цитата:

Сообщение от iNils (Сообщение 833966)
wvxvw идею кинул с Dictionary

Нее я говорю вот про такой код.
Как не создавая новых классов и не объявляя i в самом классе на подобие (private var i:Number), переменная i заданна строго в конструкторе, как обратиться к ней в функции обработчике?

Код AS3:

package {
        import flash.display.*;
        import flash.events.*;
        import flash.utils.*;
 
        public class myClass extends Sprite {
                private var myTimer:Timer;
 
                public function myClass():void {
                        var i:Number = 0;
                        myTimer = new Timer(1000);
                        myTimer.start();
                        myTimer.addEventListener(TimerEvent.TIMER, doTime);
                }
                public function doTime(e:TimerEvent):void {
                        // Как тут получить i?
                }
        }
}


etc 08.07.2009 15:40

Никак.

vvvvvvf 08.07.2009 15:49

Цитата:

Сообщение от __etc (Сообщение 833971)
Никак.

Ну наконец-то хоть один честный ответ без размазывания соплей...

iNils 08.07.2009 15:58

Цитата:

Сообщение от vvvvvvf (Сообщение 833973)
Ну наконец-то хоть один честный ответ без размазывания соплей...

Первое предупреждение.

wvxvw 08.07.2009 16:04

Цитата:

Сообщение от vvvvvvf (Сообщение 833969)
Нее я говорю вот про такой код.
Как не создавая новых классов и не объявляя i в самом классе на подобие (private var i:Number), переменная i заданна строго в конструкторе, как обратиться к ней в функции обработчике?

Код AS3:

package {
        import flash.display.*;
        import flash.events.*;
        import flash.utils.*;
 
        public class myClass extends Sprite {
                private var myTimer:Timer;
 
                public function myClass():void {
                        var i:Number = 0;
                        myTimer = new Timer(1000);
                        myTimer.start();
                        myTimer.addEventListener(TimerEvent.TIMER, doTime);
                }
                public function doTime(e:TimerEvent):void {
                        // Как тут получить i?
                }
        }
}


переменная i умрет как только выполнится конструктор - поэтому получить ее неоткуда... вообще не понятно, что вы хотели в этом коде сделать :/

Smrad 08.07.2009 18:32

Это называется замыканием
http://ru.wikipedia.org/wiki/%D0%97%...D%D0%B8%D0%B5)
Но as3 не умеет замыкать функции.

dimarik 08.07.2009 18:51

Цитата:

Сообщение от Smrad (Сообщение 834026)
Это называется замыканием. Но as3 не умеет замыкать функции.

Судя по коду JavaScript из того примера, as3 прекрасно умеет замыкать функции =)

Код AS3:

function createCounter() {
  var numberOfCalls = 0;
  return function() {
      return ++numberOfCalls;
  }
}
var fn = createCounter();
trace(fn()); //1
trace(fn()); //2
trace(fn()); //3



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

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