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

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

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

Регистрация: Feb 2013
Сообщений: 18
По умолчанию Синтаксис создания переменной

Подскажите пожалуйста как правильно создать переменную, название которой состоит из нескольких строк.
Примерно вот так:
Код AS3:
var m =1;
var "index" + m + "speed" = 0;

Старый 03.04.2013, 16:59
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Для подобных целей проще всего использовать поля объекта (поправьте меня, если я ошибаюсь):

Код AS3:
var settingsObject:Object = {};
 
settingsObject["some_" + counter + "_var"] = 125;
Но лучше таким не пользоваться. Лучше заведите массив объектов:

Код AS3:
var settingsArray:Array = [];
 
settingsArray[ counter ] = {};
settingsArray[ counter ].someProperty = 125;
__________________
hauts.ru

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

Регистрация: Jan 2009
Сообщений: 1,651
Так нельзя. Можно так:
Цитата:
var o:Object = {};
o["index"+m+"speed"] = 0;
Довольно медленно. Желательно использовать просто массивы.
__________________
мой пустой блог

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
если класс динамический, то можно пихать через this
Код AS3:
this["index" + m + "speed"] = 0;
Но как сказали выше, это не очень хорошо, но местами очень удобно.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 03.04.2013, 17:30
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 5  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Декларация переменных создана для четкого регламентирования поведения приложения. Грубо говоря тыкать себя носом что бы не делать того что не задумал. Декларировать переменные с переменными нельзя т.к. это противоречит логике декларации. А вот создать переменную можно.
Код AS3:
this["index" + m + "speed"]
хоть и не нужно. При этом она от этого не станет задекларированной: т.е. компилятор вам не даст обратиться к index22speed без квадратных скобок.

На самом деле тип данных MovieClip - динамический, как и Object, например. Это означает что можно динамически создавать переменные (чего не можем делать в Sprite); Компилятор ругается в воспитательных целях.
Код AS3:
var thisMC:MovieClip = this as MovieClip;
thisMC.index33speed = 100500;
//Так мы можем обращаться к любым новам переменным без декларации.
Теперь вопрос. Расскажите что вас заставляет избегать использования массива?
__________________
...

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

Регистрация: Jan 2009
Сообщений: 1,651
Меня обычно заставляют разреженные массивы вида map[x+"_"+y] где не требуется скорость, но иногда требуется пробежаться по всем элементам массива. Удобно.
__________________
мой пустой блог

Старый 03.04.2013, 17:46
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 7  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Это можно сделать вот так:
Код AS3:
			var array:Array = [];
			array[5] = "a";
			array[10] = "b";
			array[20] = "c";
			for (var key:String in array) {
				trace(key, array[key]);
			}
А, вы имеете ввиду случай DtataGrid например? Ну Adobe тоже практикуют такое в компонентах Flash но я как-то скептически отношусь, хотя может это и быстрее чем какой-нибудь getIndexByXY(x, y)
__________________
...

Старый 03.04.2013, 18:29
meliot вне форума Посмотреть профиль Отправить личное сообщение для meliot Найти все сообщения от meliot
  № 8  
Ответить с цитированием
meliot

Регистрация: Feb 2013
Сообщений: 18
Всем спасибо, получилось!

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

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

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


 


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


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