Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать параметр в фунцию, вызванную addEventListener'ом? (http://www.flasher.ru/forum/showthread.php?t=138562)

gait 10.04.2010 23:29

Как передать параметр в фунцию, вызванную addEventListener'ом?
 
Нужно, чтобы в каждом фрейме трейсился заданный элемент массива. Как передать в функцию traceNumEnterFrame() параметр?
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.*;
        public class arrayCheck extends MovieClip {
                var myArray:Array;                       
                public function arrayCheck() {
                        myArray = new Array(1,2,3,4,5,6,7,8,9,10);                       
                        var myVar:uint = 4;                       
                        addEventListener(Event.ENTER_FRAME, traceNumEnterFrame);
                }
                public function traceNumEnterFrame(event:Event) {
                        trace(myArray[myVar]);//1120: Access of undefined property myVar.
                }
        }
}


etc 10.04.2010 23:32

Ну сделайте myVar полем класса.

mikhailk 10.04.2010 23:37

Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.*;
        public class arrayCheck extends MovieClip {
                private var myArray:Array;       
                private var myVar:uint;       
                public function arrayCheck() {
                        myArray = new Array(1,2,3,4,5,6,7,8,9,10);                       
                        myVar = 4;                       
                        addEventListener(Event.ENTER_FRAME, traceNumEnterFrame);
                }
                private function traceNumEnterFrame(event:Event) {
                        trace(myArray[myVar]);
                }
        }
}

Но что-то мне кажется, автор имел в виду другое.

gait 11.04.2010 00:00

Цитата:

Сообщение от etc (Сообщение 899518)
Ну сделайте myVar полем класса.

Существует ли возможность передать параметр, не делая myVar полем класса?

TanaTiX 11.04.2010 00:00

В доке от адоба есть пример по программированию будильника - там про пользовательские события достаточно много написано.

ЗЫ. к своему стыду так и не могу найти время чтоб все-таки изучить эту тему. Чувствую что придется изучать по ходу выполнения очередного проекта, когда припечет :(

mikhailk 11.04.2010 00:11

gait, а что на самом деле надо-то?

MrPoma 11.04.2010 00:28

Ему нужен LOLEvent.

mikhailk 11.04.2010 01:09

может и так :)
но вообще-то, если что-то в AS3 приходится делать "через голову", то скорее всего не надо этого делать. :D

gait 11.04.2010 11:32

н-да. обнаружились глобальные пробелы в знании и понимании as3:rolleyes:. может быть мне и нужен LOLEvent, но я почти ничего не понимаю, что там происходит (зачем создаётся public static const LOL, для чего нужна функция override, ну и много чего еще, выходящее за рамки этой темы). думал, что может быть есть простое решение (типа addEventListener(Event.ENTER_FRAME, traceNumEnterFrame(myVar)):D, но всё оказалось значительно сложнее :wacko:) короче, пошёл читать форум и доки, а то будет слишком много тупых вопросов. Спасибо за наводки TanaTiX (пример по программированию будильника), MrPoma (за http://www.flasher.ru/forum/showthread.php?t=136030).

mickfallout 11.04.2010 14:09

можно попробовать сделать так:
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.events.*;
        public class Main extends MovieClip {
                private var myArray:Array;                       
                public function Main() {
                        super();
                        myArray = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);                       
                        var myVar:uint = 4;                       
                        addEventListener(Event.ENTER_FRAME, function(event:Event):void { traceNumEnterFrame(event, myVar); } );
                }
                public function traceNumEnterFrame(event:Event, myVar:int):void {
                        trace(myArray[myVar]);
                }
        }
}

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


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

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