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

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

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

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

hi
класс Btn расширяет MovieClip class c целью добавить переменные. swf с рядом символов, имеющих такие классы - кнопки, стрелки и т.п. загружается как внешняя библиотека символов в главный swf. там создается array из загруженных классов -[[class Arrow_01],[class Btn_LeftMain],[class BtnRightMain],[class Btn_01]].
Я не могу получить данные из полей экз-ов Btn при наступлении события MouseEvent.CLICK
Код AS3:
var i : Number;
			for(i = 0;i < 4;i++) {
 
				var t:DisplayObject  =new visualAssets[2](); 		
 
				t["xx"]=i;
				t.addEventListener(MouseEvent.CLICK, onMouseСlickHandler);
 
				 trace("t[xx] :"+t["xx"])//отлично трейсит
хэндлер таков:
Код AS3:
private function onMouseClickHandler(evt:Event) : void {
	var b:DisplayObjectСontainer=evt.target as DisplayObjectContainer;
 
	trace("b[xx]:" +b['xx']) //не работает! b["xx"] пробовал. Если привести к реальному названию класса Flash ругается -нет класса такого.
 
		}	
	}
класс Btn имеет внутри public var xx;

я уж не говорю о приведении к типу класса. Я делаю в FDT, создаю даже swc, где виден класс Btn. но при компиляции во Флэш переменную не вытащить, а прbведение к классу приводит к ошибке -нет такого класса. Хотя FDT корректно себя ведет.

1. В чем ошибка? просто намекнуть можно.
2. var t: DisplayObjectContainer =new visualAssets[2](); как бы это привести к такому
var t: visualAssets[2].toString()=new visualAssets[2](); то есть чтобы сразу и тип объекта задавался

Спасибо! Особо разжевывать не надо намек (не в help) был бы суперпомощью. Поучения бесцеремонные просьба оставлять при себе.

Добавлено через 49 минут
так конечно работает, но это как коряво. Хотя точно отвечает задаче -указать раздел, висящий на кнопке для сообщения медиатору.
Код AS3:
private function onMouseClickHandler(evt:Event) : void {
	var b:Object=evt.target as Object;
 
	trace("b[xx]:" +b['xx']) //работает! b["xx"] пробовал. но не нравиться кастомизация к "Объект"
 
		}	
	}


Последний раз редактировалось F_attaka; 29.04.2009 в 06:51.
Старый 29.04.2009, 07:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. В подходе. Что вы там в xx хранить собрались? Для связи вьювер<->данные пишут хеш, используя, например, Dictionary;
2. Никак. Можно наследовать все кнопки от одного базового класса или на каждую повесить интерфейс, у которого есть геттер xx. Но для работы, как с DisplayObject, всё равно придется кастить.

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

Регистрация: Apr 2009
Сообщений: 33
1. кнопка всегда хранит что-то. Как минимум ID. Как максимум -больше ничего. Или?

2. если много классов интерфейса -то ведь логично, зная их положение в Array или в Dictionary, не задавать вручную тип. Хотя по длине кода -тоже и выходит... Но явно ручками задавать как-то не хочется. Хочется, чтобы скрипт вытянул название класса и сам типизировал создаваемый объект, а я для этого только подставил позицию нужного класса в arrayOfClasses .

в целом это просто кнопка для смены раздела. Можно, конечно, расширить MovieClip и загрузить просто графику в класс и не заморачиваться. но задела тема переменных в загруженном swf.


Последний раз редактировалось F_attaka; 29.04.2009 в 09:36.
Старый 29.04.2009, 09:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. Ничего не хранит;
2. Типизировал к чему? Объект от этого не изменится.

з. Ы. Я вообще на работе.

Старый 29.04.2009, 09:35
F_attaka вне форума Посмотреть профиль Отправить личное сообщение для F_attaka Найти все сообщения от F_attaka
  № 5  
Ответить с цитированием
F_attaka

Регистрация: Apr 2009
Сообщений: 33
1. в любом случае надо знать какая кнопка, для разных целей, хотя бы остальные поставить на новые координаты. Как скрипт идентифицирует нажатую кнопку? если она сама не сообщит или ее не отследят (но все равно надо ее идентифицировать ведь).Везде кнопка имеет уникальный id, ИМХО. да не я один такой. вот примитивно, конечно, в части кнопки -http://hubflanger.com/building-a-flash-site-using-puremvc/ 8 абзац. передается ID .
собственно по этому и ползу тьюториалу.
Код AS3:
private function onMouseDownHandler(evt:Event) : void {
		// DISPATH EVENT TO PureMVC
		var b:Object=evt.currentTarget as Object;
		dispatchEvent(new MenuBtnEvent(MenuBtnEvent.MENU_BTN_PRESS, b["ID"]));
		}	
	}
2. 2. var t: DisplayObjectContainer =new visualAssets[2](); как бы это привести к такому
var t: visualAssets[2].toString()=new visualAssets[2](); то есть чтобы сразу и тип объекта задавался. Автокомлит в том же FDT работает ведь когда есс-но тип задан объекта. Я же не подставлю t.xx если это не кастом класс, содержащий setter "xx" , допустим. А если это через 300 строк кода сквозняком идет и проверки нет, так как тип не задан объекта?


Последний раз редактировалось F_attaka; 29.04.2009 в 09:59.
Старый 29.04.2009, 09:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. По хешу Dictionary button -> id. PureMVC — не панацея и не эталон программирования. И автор туториала не знает, что такое Dictionary, либо просто не умеет им пользоваться.

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

Регистрация: Apr 2009
Сообщений: 33
хорошо, я подумаю. Dictionary использовал, но не злостно.
откуда такие идеи- кто из мэтров -где читать? или он передо мной? .
создавая меню, все кнопки помещаем в dictionary. в хэндлере проверяем, какая нажата была и отдаем все данные, с ней ассоциированные, из Dictionary?

спасибо за идеи. если я правильно их понял. делал я и так -подобно вернее... если я правильно вас понял...


Последний раз редактировалось F_attaka; 29.04.2009 в 11:35. Причина: яснее выразился
Старый 29.04.2009, 10:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Уникальным идентификатором кнопки является простая ссылка на неё. Поэтому ключами Dictionary будут ссылки на кнопки, а значениями — данные. Например, ID или номер кнопки или ещё как угодно.

Старый 29.04.2009, 10:59
F_attaka вне форума Посмотреть профиль Отправить личное сообщение для F_attaka Найти все сообщения от F_attaka
  № 9  
Ответить с цитированием
F_attaka

Регистрация: Apr 2009
Сообщений: 33
конечно. и не надо никаких расширений в этом случае MovieClip.
спасибо!

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

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

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


 


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


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