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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.10.2012, 22:23
says вне форума Посмотреть профиль Найти все сообщения от says
  № 1  
Ответить с цитированием
says
Banned
[+1 13.12.12]
[+6 15.11.12]
[+5 14.12.12]

Регистрация: Sep 2012
Сообщений: 91
По умолчанию Сапер, проблемы с циклом, мышью.

Здравствуйте.
Пишу игру сапер

Пока на стадии 1-ой
-создаю 1 кнопочку графически(само собой указываю имя объекта)
-создаю поле 10х10 вложенным циклом for(тут первая проблема:внутренний цикл рисует мои 10 кнопочек по оси х,НО внешний цикл,созданный для перехода на следующую строку не срабатывает)
-далее я подумал,надо что бы мои кнопочки работали,я добавляю btn'у слушатель событий addEventListener(проблема номер 2 тут).

func_click вместе с слушателем событий я заккоментил,с ним программа вообще не работает.

код.

Код AS3:
package
{
	import flash.events.MouseEvent;//события мыши
	import flash.display.MovieClip;//для работы с кадрами
	import flash.display.Sprite; //для работы с основной функцией.
	//import flash.display.*;
	import flash.text.TextField;//для работы с надписями
	import flash.utils.getTimer;//время
 
		public class Saper extends Sprite {
		private var n:int= 0;//элементы в строке
		private var m:int= 0;//номер строки
			public function Saper(){
				for (var i:int = 0 ; i<10;i++){
					for(var j:int ; j<10;j++){
						var btn:Btn = new Btn();//присвоили переменной экземпляр
						addChild(btn);//добавили на сцену кнопочку
						n+=30;//увеличили
						btn.x = n;//отправляем кнопочку в координаты 30 по х в первый раз
						btn.y= m;//отправляем кнопочку в координаты 0 по у в первый раз
						//btn.addEventListener(MouseEvent.CLICK,func_click);
					}
					m+=30;
				}
			}
		/*function func_click (e:MouseEvent){
			var btn:Btn = new Btn();
			removeChild(btn);		
		}*/
		}
}

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

Регистрация: Mar 2007
Сообщений: 319
Код AS3:
for (var i:int = 0 ; i<10;i++){
   for(var j:int = 0; j<10;j++){
нужно присваивать переменной значение по умолчанию, чтобы повторно для нужных целей её использовать в следующей итерации

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
				for (var i:int = 0 ; i<10;i++){
                                        n = 0; //тут так же нужно обнулять, либо у Вас строки съедут
					for(var j:int = 0; j<10;j++){ // Как уже писали выше
						var btn:Btn = new Btn();
						addChild(btn);
						n+=30;
						btn.x = n;
						btn.y= m;
					}
					m+=30;
				}
__________________
ranga

Старый 17.10.2012, 09:53
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 4  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
/*function func_click (e:MouseEvent){
var btn:Btn = new Btn();
removeChild(btn);
}*/
Вы создаете кнопку и тут же пытаетесь удалить ее со сцены, это невозможно, если Вы хотели удалить кнопку ту, по которой кликнули, то это должно быть примерно так:
Код AS3:
private function func_click (e:MouseEvent):void
{
	var btn:Btn = e.currentTarget as Btn;
	if (btn)
	{
		removeChild(btn);		
	}
}
__________________
http://www.chessmax.ru

Старый 17.10.2012, 18:51
says вне форума Посмотреть профиль Найти все сообщения от says
  № 5  
Ответить с цитированием
says
Banned
[+1 13.12.12]
[+6 15.11.12]
[+5 14.12.12]

Регистрация: Sep 2012
Сообщений: 91
Cпасибо,но вы не могли бы подробнее описать,мне бы понимание этой функции...
Цитата:
Код AS3:
private function func_click (e:MouseEvent):void
{
	var btn:Btn = e.currentTarget as Btn;
	if (btn)
	{
		removeChild(btn);		
	}
}
а вот тут "хороших" изменений не произошло..
Цитата:
Код AS3:
for (var i:int = 0 ; i<10;i++){
                                        n = 0; //тут так же нужно обнулять, либо у Вас строки съедут
					for(var j:int = 0; j<10;j++){ // Как уже писали выше
						var btn:Btn = new Btn();
						addChild(btn);
						n+=30;
						btn.x = n;
						btn.y= m;
					}
					m+=30;
}

Старый 17.10.2012, 19:04
says вне форума Посмотреть профиль Найти все сообщения от says
  № 6  
Ответить с цитированием
says
Banned
[+1 13.12.12]
[+6 15.11.12]
[+5 14.12.12]

Регистрация: Sep 2012
Сообщений: 91
На данный момент код выглядит так:
Код AS3:
package
{
	import flash.events.MouseEvent;//события мыши
	import flash.display.MovieClip;//для работы с кадрами
	import flash.display.Sprite; //для работы с основной функцией.
	//import flash.display.*;
	import flash.text.TextField;//для работы с надписями
	import flash.utils.getTimer;//время
 
		public class Saper extends Sprite {
		private var n:int= 0;//элементы в строке
		private var m:int= 0;//номер строки
			public function Saper(){
				for (var i:int = 0 ; i<10;i++){
					n=0;
					for(var j:int ; j<10;j++){
						var btn:Btn = new Btn();//присвоили переменной экземпляр
						addChild(btn);//добавили на сцену кнопочку
						n+=30;//увеличили
						btn.x = n;//отправляем кнопочку в координаты 30 по х в первый раз
						btn.y= m;//отправляем кнопочку в координаты 0 по у в первый раз
						//btn.addEventListener(MouseEvent.CLICK,func_click);
					}
					m+=30;
				}
			}
			private function func_click (e:MouseEvent):void{ //Нажатие по кнопочке
			var btn:Btn = e.currentTarget as Btn;
			if (btn) //цикл,если бтн = тру то удаляем чайлд
				{
					removeChild(btn);		//удаление кнопочки
				}
			}
		}
}
результат плачевен:

http://www.flasher.ru/forum/newattac...anageattach&p=
Изображения
 

Старый 17.10.2012, 19:08
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 7  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Сравните:
Код AS3:
for(var j:int = 0; j<10;j++){ // Как уже писали выше
for(var j:int ; j<10;j++){ // Ваш код

Старый 17.10.2012, 19:11
says вне форума Посмотреть профиль Найти все сообщения от says
  № 8  
Ответить с цитированием
says
Banned
[+1 13.12.12]
[+6 15.11.12]
[+5 14.12.12]

Регистрация: Sep 2012
Сообщений: 91
Ой,дурья моя голова))) спасибо,не заметил очевидного))) а вот по поводу этой функции кто нить максимально подробные пояснения может дать?
Код AS3:
private function func_click (e:MouseEvent):void{ //Нажатие по кнопочке
			var btn:Btn = e.currentTarget as Btn;
			if (btn) //цикл,если бтн = тру то удаляем чайлд
				{
					removeChild(btn);		//удаление кнопочки
				}
			}

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
var btn:Btn = e.currentTarget as Btn;
Вы подписываетесь на событие MouseEvent.CLICK у баттона, обработчик этого события вызовется, когда кто то нажмет на кнопку. В обработчик будет передан объект события, у которого есть сслыка на target. target это объект который диспатчнул событие, в данном случае это объект на который нажали. так как target, это возможно не сама кнопка, а один и её детей, то мы запрашиваем currentTarget, что гарантирует нам то, что вернется именно тот объект, на событие которого мы подписались.

подробнее о фазах событий

после того, как мы получили ссылку на кнопку, мы проверяем не равна ли она null, такое значения она может получить в процессе преобразования её к классу Btn. Если она не null, то мы её удаляем.
__________________
ranga

Старый 17.10.2012, 19:36
says вне форума Посмотреть профиль Найти все сообщения от says
  № 10  
Ответить с цитированием
says
Banned
[+1 13.12.12]
[+6 15.11.12]
[+5 14.12.12]

Регистрация: Sep 2012
Сообщений: 91
Цитата:
Сообщение от incvizitor Посмотреть сообщение
Код AS3:
var btn:Btn = e.currentTarget as Btn;
Вы подписываетесь на событие MouseEvent.CLICK у баттона, обработчик этого события вызовется, когда кто то нажмет на кнопку. В обработчик будет передан объект события, у которого есть сслыка на target. target это объект который диспатчнул событие, в данном случае это объект на который нажали. так как target, это возможно не сама кнопка, а один и её детей, то мы запрашиваем currentTarget, что гарантирует нам то, что вернется именно тот объект, на событие которого мы подписались.

подробнее о фазах событий

после того, как мы получили ссылку на кнопку, мы проверяем не равна ли она null, такое значения она может получить в процессе преобразования её к классу Btn. Если она не null, то мы её удаляем.
Спасибо,знали бы вы какая это ценная информация! (не сарказм)

Добавлено через 1 час 50 минут
только функция не удаляет кнопку после нажатия

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

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

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


 


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


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