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

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

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

Регистрация: Oct 2006
Сообщений: 2,281
П - переносимость.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Использование getDefinitionByName для инициализации мувиков, по сути на лету, что есть плохой практикой.
Да и бог знает, на что повешен этот слушатель, если мы тащим не currentTarget, а target. У меня чувство, что на stage. В таком случае если класс мувика, не имеющего MC партнёра, имеет имя, начинающегося на b, и на него нажали(случайно, скажем), код сгенерит рантайм ошибку.
Ну и да, переносимость. Код ведь должен быть писан так, чтобы его можно было затем использовать в последующих проектах.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Код AS3:
var objectName:String = event.target.toString();
var digitPart:String = objectName.match( /\d+/)[0]; // выдаст что-то типа 01, 02... в зависимости от имени класса
var ClipClass:Class = getDefinitionByName("MC" + digitPart) as Class;
mc_1 = new ClipClass();
Код AS3:
function myClick(event: MouseEvent): void {
	var name:String = flash.utils.getQualifiedClassName(event.target);
	if(name.charAt(0).toLowerCase() != "b") return;
	var num:String = name.substr(name.lastIndexOf("_") + 1);
	var SomeMC:Class = flash.utils.getDefinitionByName("MC" + num);
	mc_1 = new SomeMC();
}
А ещё и вот так можно
Код AS3:
var objectName:String = event.target.toString();
var digitPart:String = objectName.split("_")[1];
var ClipClass:Class = getDefinitionByName("MC" + digitPart) as Class;
mc_1 = new ClipClass();
__________________
Я заклинаю вас действовать иначе.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
О, точняк! Я тоже за этот способ! Только вот так.
Код AS3:
var objectName:String = event.target.toString();
var nameArray:Array = objectName.split("_");
if(nameArray[0] != "b") return;
var digitPart:String = nameArray[1];
var ClipClass:Class = getDefinitionByName("MC" + digitPart) as Class;
mc_1 = new ClipClass();
Но у этого способа есть 1 ограничение - нельзя использовать больше одного символа подчёркивания в имени кнопки.
__________________
There is no thing in this world that is not simple.

Старый 18.10.2017, 19:26
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 15  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
хоспаде,объясните уже тс'у, что его подход в корне неверен.
Хотя он, судя по всему, сам потерял интерес.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
undefined, почему неверен? Человек явно не хочет писать тонну лишнего кода, в эти 6 строк он экономит уйму времени.
Если мне важно сделать что-то быстро, и не париться насчёт кода потом вообще, я мог бы сделать и так.
В случае, если с этим кодом потом не нужно будет работать.

Добавлено через 36 минут
Код AS3:
var objectName:String = event.target.toString();
А, не заметил. Такое не прокатит, ибо там закрывающая квадратная скобка.
Нужно юзать getQualifiedClassName() либо парсить регулярками.
__________________
There is no thing in this world that is not simple.

Старый 18.10.2017, 20:35
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 17  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Человек явно не хочет писать тонну лишнего кода, в эти 6 строк он экономит уйму времени.
У тс'а есть такой код
Код AS3:
……………………………………………………………….
сколько это строк?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
А, так он за этим же и написал на форум, мол, подскажите, как не писать это пятьдесят раз, для каждой кнопки и мувика.
Я думаю, он и сам догадался, что это китайский код, раз попросил "унифицировать")
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Код AS3:
var objectName:String = event.target.toString();
А, не заметил. Такое не прокатит, ибо там закрывающая квадратная скобка.
Нужно юзать getQualifiedClassName() либо парсить регулярками.
Если ты не обратил внимание, то мой код, откуда взята эта строчка, как раз и использует регулярку. При чем она там всего одна и очень простая /\d+/
__________________
Ко мне можно и нужно обращаться на ты)

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Это взято не из твоего кода, а из кода Bletraut. У него нет регулярок.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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