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

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

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

Регистрация: Jan 2011
Сообщений: 247
По умолчанию Проблема с ENTER_FRAME

Код AS3:
private var directType:String;
private var lvlArray:Array = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,R,1,1,D,0,0,R,1,1,D,0,0,R,1,1,D,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			S,D,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,R,1,F,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,R,1,1,U,0,0,R,1,1,U,0,0,R,1,1,U,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,];
 
//code
 
private function makeRoad():void{
			var row:int = 0;
			for(var i:int=0;i<lvlArray.length;i++){
				if(lvlArray[i] == 0){
                                                         //code
				} else if(lvlArray[i] == 1){
					//code
				} else if(lvlArray[i] is String){
					var block3:Sprite = new Sprite();
					block3.graphics.beginFill(0x111111);
					block3.graphics.drawRect(0,0,25,25);
					block3.graphics.endFill();
					block3.x = (i - row * 22) * 25;
					block3.y = row * 25;
					directType = lvlArray[i];
					//addEventListener(Event.ADDED, begindirect);
					addEventListener(Event.ENTER_FRAME, eFrameD);
					addChild(block3);
					trace(directType+' -scan');
				}
			}
		}
private function eFrameD(e:Event):void {
			trace(directType+' -finish');
}
Проблема в том что событие eFrameD трейсит только самую последнюю строку в моем случае "U", при трасировке в цикле все трейсится нормально,не могу понять почему так...

Старый 30.07.2011, 18:43
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 2  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Во первых знаешь сколько ентер фреймов ты регистрируеш в приложении ?? от этого он просто вздохнет! должен быть регистрирован один ентер фрейм .
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 30.07.2011, 18:47
2Sun вне форума Посмотреть профиль Отправить личное сообщение для 2Sun Найти все сообщения от 2Sun
  № 3  
Ответить с цитированием
2Sun
[+1 24.05.11]
[+1 09.08.11]
 
Аватар для 2Sun

Регистрация: Mar 2011
Сообщений: 101
А зачем у вас здесь ENTER_FRAME? Вы же циклом перебираете массив - в нем и трайс делайте (ну или просто вызывайте какую -то функцию для обработки объекта.
либо укажите кому вы этот ENTER_FRAME назначаете.

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

Регистрация: Jan 2011
Сообщений: 247
Цитата:
Сообщение от Vishapakahr Посмотреть сообщение
Во первых знаешь сколько ентер фреймов ты регистрируеш в приложении ?? от этого он просто вздохнет! должен быть регистрирован один ентер фрейм .
Знаю 16 фреймов), да вроде нормально пока, на фпс пока не обращаю внимание, сейчас главное нормальная передача событий..

Добавлено через 2 минуты
Цитата:
Сообщение от 2Sun Посмотреть сообщение
А зачем у вас здесь ENTER_FRAME? Вы же циклом перебираете массив - в нем и трайс делайте (ну или просто вызывайте какую -то функцию для обработки объекта.
либо укажите кому вы этот ENTER_FRAME назначаете.
Нужен именно Event , потому как там идет дальнейшая обработка каждой строки..

Старый 30.07.2011, 18:52
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 5  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от Vishapakahr Посмотреть сообщение
должен быть регистрирован один ентер фрейм .
Почему?
Цитата:
Нужен именно Event , потому как там идет дальнейшая обработка каждой строки..
GrafMine, то ли вы не понимаете когда и кто шлет событие ENTER_FRAME, то ли у вас какая то странная задача.

Старый 30.07.2011, 18:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
У вас directType один на всех, поэтому он и хранит последнее значение.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 30.07.2011, 18:57
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 7  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
Цитата:
Сообщение от Bgg Посмотреть сообщение
GrafMine, то ли вы не понимаете когда и кто шлет событие ENTER_FRAME, то ли у вас какая то странная задача.
чтоб не было не дорозумений нужна мне там ENTER_FRAME или нет вот код :
Код AS3:
private function eFrameD(e:Event):void {
 
			trace(directType);
			if(directType != 'START' && directType != 'FINISH'){
				for(var i:int = 0;i<enemyHolder.numChildren;i++){
					var enTarget = enemyHolder.getChildAt(i);
					if(this.x >= enTarget.x - enTarget.width*.5 && this.x <= enTarget.x + enTarget.width*.5
					&& this.y >= enTarget.y - enTarget.height * .5 && this.y <= enTarget.y + enTarget.height * .5) {
					if(directType == 'UP'){
							enTarget.xSpeed = 0;
							enTarget.ySpeed = -maxSpeed;
						} else if(directType == 'RIGHT'){
							enTarget.xSpeed = maxSpeed;
							enTarget.ySpeed = 0;
						} else if(directType == 'DOWN'){
							enTarget.xSpeed = 0;
							enTarget.ySpeed = maxSpeed;
						} else if(directType == 'LEFT'){
							enTarget.xSpeed = maxSpeed;
							enTarget.ySpeed = 0;
						}
					}
				}
			}
 
		}
Добавлено через 6 минут
Цитата:
Сообщение от iNils Посмотреть сообщение
У вас directType один на всех, поэтому он и хранит последнее значение.
Спасибо , вы само лучше поняли суть вопроса )
я попробовал :
Код AS3:
//...
} else if(lvlArray[i] is String){
//...
var TypeA:String = lvlArray[i];
//...
}
directType = TypeA;
}
все равно последнее передает, что можете посоветовать?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Вы можете присвоить directType имени объекта. Или создать класс спрайта с нужным свойством.

Код:
private var directType:String;
private var lvlArray:Array = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,R,1,1,D,0,0,R,1,1,D,0,0,R,1,1,D,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			S,D,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,R,1,F,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,R,1,1,U,0,0,R,1,1,U,0,0,R,1,1,U,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,];
 
//code
 
private function makeRoad():void{
			var row:int = 0;
			for(var i:int=0;i<lvlArray.length;i++){
				if(lvlArray[i] == 0){
                                                         //code
				} else if(lvlArray[i] == 1){
					//code
				} else if(lvlArray[i] is String){
					var block3:Sprite = new Sprite();
					block3.graphics.beginFill(0x111111);
					block3.graphics.drawRect(0,0,25,25);
					block3.graphics.endFill();
					block3.x = (i - row * 22) * 25;
					block3.y = row * 25;
					directType = lvlArray[i];
                                                        block3.name=directType;
					//addEventListener(Event.ADDED, begindirect);
					addEventListener(Event.ENTER_FRAME, eFrameD);
					addChild(block3);
					trace(directType+' -scan');
				}
			}
		}
private function eFrameD(e:Event):void {
			trace(e.target.name+' -finish');
}


Последний раз редактировалось iNils; 30.07.2011 в 19:21.
Старый 30.07.2011, 19:22
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Код AS3:
private var _dic:Dictionary = new Dictionary ();
private var directType:String;
private var lvlArray:Array = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,R,1,1,D,0,0,R,1,1,D,0,0,R,1,1,D,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,
			S,D,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,R,1,F,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,
			0,R,1,1,U,0,0,R,1,1,U,0,0,R,1,1,U,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,];
 
//code
 
private function makeRoad ():void {
	var row:int = 0;
	for(var i:int=0;i<lvlArray.length;i++){
		if(lvlArray[i] == 0){
												 //code
		} else if(lvlArray[i] == 1){
			//code
		} else if(lvlArray[i] is String){
			var block3:Sprite = new Sprite();
			block3.graphics.beginFill(0x111111);
			block3.graphics.drawRect(0,0,25,25);
			block3.graphics.endFill();
			block3.x = (i - row * 22) * 25;
			block3.y = row * 25;
			_dic[block3] = lvlArray[i];
			//addEventListener(Event.ADDED, begindirect);
			block3.addEventListener(Event.ENTER_FRAME, eFrameD);
			addChild(block3);
			trace(_dic[block3]+' -scan');
		}
	}
}
private function eFrameD(e:Event):void {
	trace(_dic[e.target]+' -finish');
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 30.07.2011, 19:58
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 10  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
samana, с вашего примера в eFrameD трейсит :
Код AS3:
root1 -finish
это что-то не то )

iNils, с вашего примера в цикле нормально трейсит а в eFrameD тресит :
Код AS3:
undefined -finish
странно

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

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

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


 


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


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