Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.04.2010, 23:29
gait вне форума Посмотреть профиль Отправить личное сообщение для gait Найти все сообщения от gait
  № 1  
Ответить с цитированием
gait

Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
Question Как передать параметр в фунцию, вызванную 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.
		}
	}
}

Старый 10.04.2010, 23:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну сделайте myVar полем класса.

Старый 11.04.2010, 00:00
gait вне форума Посмотреть профиль Отправить личное сообщение для gait Найти все сообщения от gait
  № 3  
Ответить с цитированием
gait

Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
Цитата:
Сообщение от etc Посмотреть сообщение
Ну сделайте myVar полем класса.
Существует ли возможность передать параметр, не делая myVar полем класса?

Старый 10.04.2010, 23:37
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 4  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Код 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]);
		}
	}
}
Но что-то мне кажется, автор имел в виду другое.


Последний раз редактировалось mikhailk; 10.04.2010 в 23:43.
Старый 11.04.2010, 00:00
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
В доке от адоба есть пример по программированию будильника - там про пользовательские события достаточно много написано.

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

Старый 11.04.2010, 00:11
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
gait, а что на самом деле надо-то?

Старый 11.04.2010, 00:28
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 7  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Ему нужен LOLEvent.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 11.04.2010, 01:09
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 8  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
может и так
но вообще-то, если что-то в AS3 приходится делать "через голову", то скорее всего не надо этого делать.

Старый 11.04.2010, 11:32
gait вне форума Посмотреть профиль Отправить личное сообщение для gait Найти все сообщения от gait
  № 9  
Ответить с цитированием
gait

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


Последний раз редактировалось gait; 11.04.2010 в 11:34.
Старый 12.04.2010, 18:44
inozemcev вне форума Посмотреть профиль Отправить личное сообщение для inozemcev Найти все сообщения от inozemcev
  № 10  
Ответить с цитированием
inozemcev
 
Аватар для inozemcev

блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
Public static const нужен для того, чтобы сделать код интуитивно более понятным

например вместо MouseEvent.CLICK можно использовать просто "click" но это может быть не очень понятно поэтому принято использовать константы.

public мы определяем потому, что это событие должно быть доступно из вне.

Теперь, как все собрать воедино:
Расширяем класс event Своим Классом
Определяем public переменную
Не забываем про функцию clone

Далее все просто 1.

1.регистрируем листенер, пишем константу того класса которая диспечеризирует наше событие
2. В приемнике события указывает тип принимаемого события (в данном случае пользовательского)
3. диспетчеризируем пользовательское событие согласно внутренней логике

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
anonimous function , вложенность

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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