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

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

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

Регистрация: Sep 2010
Сообщений: 28
В классе. можете набросать этот кусочек кода, у меня пока не получается..(

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
private var _btnList:Array;
...
_btnList = [];
...
_btnList.push(button);
__________________
тут я

Старый 13.08.2012, 13:44
Koby вне форума Посмотреть профиль Отправить личное сообщение для Koby Найти все сообщения от Koby
  № 13  
Ответить с цитированием
Koby

Регистрация: Sep 2010
Сообщений: 28
так проблема в addEventListener же, как его изменить, он после изменений все равно не видит кнопки в функции, к массиву его нада как то прикручивать?

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
private var _btnList:Array;
...
_btnList = [];
...
for (var i:uint = 0; i < 10; i++) {
    var button:MyButton = new MyButton();
    button.y = 10 * i;
 
    addChild(button);
    _btnList.push(button);
 
    button.addEventListener(MouseEvent.MOUSE_UP, button_mouseUpHandler);
}
 
private function button_mouseUpHandler(event:MouseEvent):void {
    var button:MyButton = event.currentTarget as MyButton; // на которую нажали
    var index:uint = _btnList.indexOf(button); // индекс в массиве
    var button2:MyButton = _btnList[index] as MyButton; // эта же кнопка по индексу из массива
    trace(button === button2); // true
}
__________________
тут я

Старый 13.08.2012, 14:59
Koby вне форума Посмотреть профиль Отправить личное сообщение для Koby Найти все сообщения от Koby
  № 15  
Ответить с цитированием
Koby

Регистрация: Sep 2010
Сообщений: 28
Спасибо, теперь все понятно и все работает

Старый 13.08.2012, 21:58
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 16  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
Код AS3:
buttuon_ObjNames:Array=new Array();
for (var i:Number=0; i<10; i++)
{
var button:MovieClip=new MovieClip();
button.name="button_"+i
buttuon_ObjNames.push(button);
this.addChild(buttuon_ObjNames[i]);				
buttuon_ObjNames[i].addEventListener(MouseEvent.CLICK, onClickButton);
buttuon_ObjNames[i].y=i*buttuonMO_ObjNames[i].height;
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Топикстартеру уже все равно, а Вам пару советов.
1) Не называйте массив buttuon_ObjNames, если он хранит НЕ имена.
2) У Вас есть ссылка на созданный мувиклип: var button:MovieClip=new MovieClip();
Зачем, засунув ее в массив (buttuon_ObjNames.push(button), Вы перестаете пользоваться прямой ссылкой button и начинаете звонить соседу за столом по телефону: buttuon_ObjNames[i], заставляя плеер искать массив и дергать из него свойство по индексу? Мало того, что это нечитабельно, непонятна сама физзарядка.
3) Имя, конечно, бесплатный хранитель данных. Но эти данные потом надо парсить из строки, вырезая и интерпретируя в другой тип. Либо писать монструозную колонку свитчей, что вообще не укладывается в динамику.
__________________
Reality.getBounds(this);

Старый 14.08.2012, 10:11
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 18  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
1.Согласен.
2.Массив затем,что объекты создаются в цикле: var button... и значение button всё время перезаписывается
3.Просто через индекс массива обращаюсь, а имя... через имена привязываю другие данные из XML
Если б я был профи, то и вопросов бы не задавал )

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
я бы хранил номер кнопки в самом классе кнопки
а потом вызывал бы конструкцию вида
Код AS3:
function onClick(event:MouseEvent){
        trace(event.target as ButtonClass.getButtonNumber()); 
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
и значение button всё время перезаписывается
Не "всё время", а с каждым новым витком цикла. В теле цикла локальная переменная button продолжает ссылаться на тот же объект, даже когда ссылка на этот объект копируется в массив:
Код AS3:
var buttons:Array = new Array();
for (var i:int=0; i<10; i++)
{
	var button:MovieClip = new MovieClip();
	button.name = "button_" + i;
	buttons.push(button);
	this.addChild(button);				
	button.y = i * button.height;
	button.addEventListener(MouseEvent.CLICK, onClickButton);
}
Я не спрашивал, зачем нужен массив. Я спрашивал, зачем в теле цикла обращаться к button через массив, когда button доступен прямо здесь и сейчас.
__________________
Reality.getBounds(this);

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

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

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


 


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


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