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

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

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

Регистрация: Apr 2013
Сообщений: 44
По умолчанию Обработка с помощью массива

Здравствуйте!
Код AS3:
B5.addEventListener(MouseEvent.CLICK,onClickHandler);
			B4.addEventListener(MouseEvent.CLICK,onClickHandler);
			B3.addEventListener(MouseEvent.CLICK,onClickHandler);
			B2.addEventListener(MouseEvent.CLICK,onClickHandler);
			B1.addEventListener(MouseEvent.CLICK,onClickHandler);
			B6.addEventListener(MouseEvent.CLICK,onClickHandler);
Вот у меня столько кнопок, и хотелось бы через массив я думаю было бы удобнее... Но что то не то, я пробовал вот так.
Код AS3:
private function addEvents():void
		{
			for (var i:int=1; i<ButtonNumber; i++)
			{
				var btn:R_697 = new R_697();
				btn.name = "B" + i;
				btn.addEventListener(MouseEvent.CLICK,onClickHandler);
			}
		}
Но так он ругается!

Вообще очень хотел бы научиться обрабатывать с помощью массивов, где есть об этом информация? если кто знает очень был бы благодарен! и Про функции и параметры тоже!

Добавлено через 12 минут
Тоесть не так выразился, хотелось бы через массив добавить слушателей для кнопок которые уже на сцене

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

Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
А почему индекс начинается с 1? У массивов первый индекс 0.

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

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
var buttons:Array = [];
 
for(var i:int = 0; i<ButtonNumber; i++) {
    var button:R_697 = new R_697();
    button.name = "b" + i;
    button.addEventListener(MouseEvent.CLICK,onClickHandler);
    buttons.push(button);
}
 
trace(buttons);

Старый 11.06.2013, 14:53
mAK08 вне форума Посмотреть профиль Отправить личное сообщение для mAK08 Найти все сообщения от mAK08
  № 4  
Ответить с цитированием
mAK08

Регистрация: Apr 2013
Сообщений: 44
Ваш Вариант пробовал но не хочет ругается на строчку
Код AS3:
var button:R_697 = new R_697();
изменил на
Код AS3:
var buttons:Array = [];
 
for(var i:int = 0; i<ButtonNumber; i++) {
    var button:SimpleButton = new SimpleButton();
    button.name = "b" + i;
    button.addEventListener(MouseEvent.CLICK,onClickHandler);
    buttons.push(button);
}
 
trace(buttons);
Компилируется но кнопки не реагируют...

попытался вот таким вариантом
Код AS3:
private function initialButtonsMain():void // Buttons on Main Scene
		{
			for (var i:int = 1; i<BUTTONS_VALUE; i++)
			{
				var button:SimpleButton = this.getChildByName("B" + i) as SimpleButton;
				button.addEventListener(MouseEvent.CLICK, onClickHandler);
				buttonsA.push(button);
			}
			updateListeners(true);
		}
 
		private function updateListeners(param:Boolean):void // Check for Bool Parameter
		{
			for (var i:int = 1; i<buttonsA.length; i++)
			{
				var button:SimpleButton = buttonsA[i] as SimpleButton;
				if (param)
				{
					button.addEventListener(MouseEvent.CLICK, onClickHandler);
				}
				else
				{
					button.removeEventListener(MouseEvent.CLICK, onClickHandler);
				}
 
			}
 
		}
Но говорит Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

Можно ли как нибудь еще? или как исправить такую ошибку. Просто очень хочется обрабатывать с помощью массивов потому что когда кнопок 10 то каждый раз одно и то же писать как то некрасиво...

Добавлено через 3 минуты
вот весь код класса
Код AS3:
package basis
{
	import flash.events.MouseEvent;
	import flash.events.Event;
	import flash.display.SimpleButton;
	import flash.display.MovieClip;
	import com.greensock.*;
	import com.greensock.easing.*;
 
 
 
	public class Main_697 extends MovieClip
	{
 
		private const BUTTONS_VALUE:int = 4;
		private var buttonsA:Array = [];
		private var mc_1:MC_1;
		private var mc_2:MC_2;
		private var mc_3:MC_3;
 
		public function Main_697()
		{
			addEventListener(Event.ADDED_TO_STAGE, initialMain);
 
			initialButtonsMain();// add Listeners for Buttons: if true = add, false = remove;
 
			mc_1 = new MC_1;
			mc_2 = new MC_2;
			mc_3 = new MC_3;
		}
 
		private function initialMain(e:Event):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, initialMain);
 
			importObjectToMainScene(mc_1);
 
		}
 
		private function initialButtonsMain():void // Buttons on Main Scene
		{
			for (var i:int = 1; i<BUTTONS_VALUE; i++)
			{
				var button:SimpleButton = this.getChildByName("B" + i) as SimpleButton;
				buttonsA.push(button);
			}
			updateListeners(true);
		}
 
		private function updateListeners(param:Boolean):void // Check for Bool Parameter
		{
			for (var i:int = 1; i<buttonsA.length; i++)
			{
				var button:SimpleButton = buttonsA[i] as SimpleButton;
				if (param)
				{
					button.addEventListener(MouseEvent.CLICK, onClickHandler);
				}
				else
				{
					button.removeEventListener(MouseEvent.CLICK, onClickHandler);
				}
 
			}
 
		}
 
		private function onClickHandler (e:MouseEvent):void // Choose right Movie Clip
		{
			switch(e.currentTarget.name)
			{
				case 'B1':
				removeObjectFromMainScene();
				importObjectToMainScene(mc_1);
				break;
 
				case 'B2':
				removeObjectFromMainScene();
				importObjectToMainScene(mc_2);
 
			}
		}
 
 
		private function importObjectToMainScene( displayedObject:MovieClip ):void // Import MovieClip To Main Scene
		{
			displayedObject.x = 88;
			displayedObject.y = 88;
 
			addChild(displayedObject);
		}
 
		private function removeObjectFromMainScene():void // Remove all Childs except Movie Clip on First Level
		{
			while (this.numChildren > 0)
			{
				this.removeChildAt(0);
			}
		}
 
 
 
	}
 
}

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Подпишитесь слушать контейнер этих кнопок и по target ловите.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 11.06.2013, 15:34
mAK08 вне форума Посмотреть профиль Отправить личное сообщение для mAK08 Найти все сообщения от mAK08
  № 6  
Ответить с цитированием
mAK08

Регистрация: Apr 2013
Сообщений: 44
Непонял, как это подпишитесь слушать контейнер кнопок. Какой контейнер?

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

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
for (var i:int = 1; i<buttonsA.length; i++)
Код AS3:
for (var i:int = 1; i<BUTTONS_VALUE; i++)
Запомните: первый индекс массива = 0.
Правильно так:
Код AS3:
for (var i:int = 0; i<buttonsA.length; i++)
Код AS3:
for (var i:int = 0; i<BUTTONS_VALUE; i++)

Старый 11.06.2013, 16:08
mAK08 вне форума Посмотреть профиль Отправить личное сообщение для mAK08 Найти все сообщения от mAK08
  № 8  
Ответить с цитированием
mAK08

Регистрация: Apr 2013
Сообщений: 44
знаю, но мне нужно с 1 начинать что бы кнопки ровно попадали первая кнопка 1 вторая 2 и т д а не первая кнопка 0 и т д... А какая разница хоть с 10 начинать...

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Не понял, как это подпишитесь слушать контейнер кнопок. Какой контейнер?
Вы добавляете кнопки в какой-то визуальный объект. Подписаться можно на него. И в самом обработчике смотреть target и имя target'a. При щелчке по любой из кнопок событие проходит по всей ветке визуального дерева до кнопки, а потом "всплывает" обратно (не люблю это описание).
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
			for (var i:int = 1; i<BUTTONS_VALUE; i++)
			{
				var button:SimpleButton = this.getChildByName("B" + i) as SimpleButton;
				buttonsA.push(button);
				button.mouseChildren = false;
			}

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

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

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


 


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


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