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

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

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

Регистрация: May 2016
Сообщений: 25
По умолчанию Запись поля в Оbjeсt через ссылку в фигурных скобках { }

Добрый день.
Интересует возможность записать поля в Оbjeсt из переменной при создании - { поле:значение }. В значение можно прямо положить какую-то переменную. А вот поле обязательно должно быть записано через "" или же запись будет прямо использовано как имя поля.
Мне же нужно что-то вроде { this.somevalue/*link*/:str }. При такой записи компилятор ругается. Я раньше делал так { (this.somevalue as String):str }, и это работало. Но после обновления flex sdk компилятор, видимо, изменили, и сейчас мне приходиться городить:
Код AS3:
var o:Оbjeсt = { };
o[somevalue] = str;
//use 'o'
Есть ли какие-то иные варианты для сокращенной записи?

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Код AS3:
var obj:Object = {A:1,B:2,SomethingString:'thisString'};
obj.C = 3;
obj['TEST'] = 4;
trace( obj.A );
trace( obj.C );
trace( obj.TEST );
trace( obj['A'] );
trace( obj.SomethingString );
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

Регистрация: May 2016
Сообщений: 25
Не понял, к чему этот код. Может я не верно выразился. Меня интересует возможность создать объект, и записать в него поля без создания промежуточной переменной под Object.
Код AS3:
var someField:String = "name";
var someName:String = "John";
 
someNameHandleFunction( { someField:someName } );
В данной записи в методе будет получен объект с полем "someField" и значением "John". Мне же нужно получить поле "name" со значением "John".

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
нельзя так сделать
__________________
Ко мне можно и нужно обращаться на ты)

Старый 21.12.2016, 20:06
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 5  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Код AS3:
var someField:String = "name";
var someName:String = "John";
 
 
function hndl( obj:Object):void{
        trace( obj[someField] );
        trace( obj.name );
}
 
hndl( { (someField as String):someName } );
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от dark256 Посмотреть сообщение
Код AS3:
var someField:String = "name";
var someName:String = "John";
 
 
function hndl( obj:Object):void{
	trace( obj[someField] );
}
 
hndl( { (someField as String):someName } );
Эта конструкция тебе вернет в качестве ключа строчное значение переменной, а не запишет ключом название переменной
__________________
Ко мне можно и нужно обращаться на ты)

Старый 21.12.2016, 20:12
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 7  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Эта конструкция тебе вернет в качестве ключа строчное значение переменной, а не запишет ключом название переменной
Выше - с ключем. Или я все равно не понял - что, куда, кому и как вернуть
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

Регистрация: May 2016
Сообщений: 25
Цитата:
Сообщение от dark256 Посмотреть сообщение
Код AS3:
var someField:String = "name";
var someName:String = "John";
 
 
function hndl( obj:Object):void{
        trace( obj[someField] );
        trace( obj.name );
}
 
hndl( { (someField as String):someName } );
В том-то и дело, что у меня строка hndl( { (someField as String):someName } ); выдаст ошибку еще на этапе сборки swf. Раньше работало. Теперь ни в какую на свежескачанном flex sdk.

P.S. "Syntax error: '(' is not allowed here" И "Syntax error: Label must be a simple identifier.".

Старый 21.12.2016, 20:35
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 9  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Цитата:
Сообщение от robotR2D2 Посмотреть сообщение
В том-то и дело, что у меня строка hndl( { (someField as String):someName } ); выдаст ошибку еще на этапе сборки swf. Раньше работало. Теперь ни в какую на свежескачанном flex sdk.
Тьфу. Это я дятел, туплю уже. Не дочитал. Тогда - увы и ах. Ни знаю
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Вообще не представляю зачем вам это нужно...
Код AS3:
var varName:String = 'property';
		var o:Object = {(varName.toString()):'value'};
		trace(o.property);
или
Код AS3:
var varName:String = 'property';
		var o:Object = {([varName]):'value'};
		trace(o.property);
Компилируется, работает. Но вот форматирование кода в FD не хочет работать с таким "хаком".

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

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

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


 


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


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