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

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

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

Регистрация: Mar 2010
Сообщений: 117
По умолчанию Как коректно использовать this[param];

Кто знает в чём проблема. Может быть неправильно использую. Поскажите пожалуйста.
Вот так работает:
Код AS3:
public function show_thing():void 
{
	var t_name1:String  = "new_thing";
 
             var new_thing :thing;
	new_thing = new thing();
	addChild(new_thing);
             new_thing.x = 15;
	new_thing.y = 100;
}
Вот так не работает:
Код AS3:
public function show_thing():void 
{
	var t_name1:String  = "new_thing";
 
             var new_thing :thing;
	new_thing = new thing();
	addChild(new_thing);
	this[t_name1].x = 15;
	new_thing.y = 100;
}
ReferenceError: Error #1069: Не удалось найти свойство new_thing в main.table; отсутствует значение по умолчанию.

Старый 06.05.2010, 22:46
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
так и есть.
у тебя new_thing — локальная переменная и видна только в пределах функции show_thing().
__________________
Поймай яблоко 2!

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

Регистрация: Apr 2010
Сообщений: 34
Личноу меня ваш метод прокатил. Только что проверил на данном коде
Код AS3:
private function createMonstaer(e:TimerEvent):void
		{
			var monst:String = "monster_mc";
			monster_mc = new monster(newHealth, this);
			this[monst].putOnRandomPlace(); // Данный метод сработал без проблем  
			monster_Container.addChild(monster_mc);
 
		}
У вас класс динамический?

Цитата:
Сообщение от Zebestov Посмотреть сообщение
так и есть.
у тебя new_thing — локальная переменная и видна только в пределах функции show_thing().
Тк он и использует, насколько я понял, только в пределах этой функции.


Последний раз редактировалось PHILOSOFF; 06.05.2010 в 23:18.
Старый 06.05.2010, 23:31
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
PHILOSOFF, ваш вариант отличается.

Боня, если хотите по имени обращаться используйте getChildByName(). Имя соответственно задать нужно будет.

Старый 06.05.2010, 23:39
PHILOSOFF вне форума Посмотреть профиль Отправить личное сообщение для PHILOSOFF Найти все сообщения от PHILOSOFF
  № 5  
Ответить с цитированием
PHILOSOFF

Регистрация: Apr 2010
Сообщений: 34
Цитата:
Сообщение от udaaff Посмотреть сообщение
PHILOSOFF, ваш вариант отличается.
Эм, честно говоря не вижу разницы.

Ну хорошо... напишу вот так

Код AS3:
private function createMonstaer(e:TimerEvent):void
		{
			var monst:String = "monster_mc";
			monster_mc = new monster(newHealth, this);
			this[monst].x = 100;
			monster_mc.y = 300;
		        monster_Container.addChild(monster_mc);
		}

Старый 06.05.2010, 23:39
Боня вне форума Посмотреть профиль Отправить личное сообщение для Боня Найти все сообщения от Боня
  № 6  
Ответить с цитированием
Боня

Регистрация: Mar 2010
Сообщений: 117
Цитата:
Сообщение от udaaff Посмотреть сообщение
PHILOSOFF, ваш вариант отличается.

Боня, если хотите по имени обращаться используйте getChildByName(). Имя соответственно задать нужно будет.
У меня суть такая: несколько клипов на экране и при нажатии на один из них, клип передаёт своё имя в функцию родителя. И что бы не использовать структуру case. Я хочу сразу подставлять что-то вроде:
new_shing : this[t_name1];

Цитата:
У вас класс динамический?
Нет.


Последний раз редактировалось Боня; 06.05.2010 в 23:42.
Старый 06.05.2010, 23:45
PHILOSOFF вне форума Посмотреть профиль Отправить личное сообщение для PHILOSOFF Найти все сообщения от PHILOSOFF
  № 7  
Ответить с цитированием
PHILOSOFF

Регистрация: Apr 2010
Сообщений: 34
Цитата:
Сообщение от Боня Посмотреть сообщение
Нет.
Ну тк попробуйте написать что класс динамический и возможно все прокатит

Код AS3:
public dynamic class NewGame extends ...
{
   ......
}

Старый 06.05.2010, 23:48
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от PHILOSOFF Посмотреть сообщение
Эм, честно говоря не вижу разницы.
Вы записываете ссылку в поле класса, а автор в локальную переменную функции.
Цитата:
Ну тк попробуйте написать что класс динамический и возможно все прокатит
dynamic нужно использовать ровно там, где это необходимо, а не где попало.

Боня, что мешает сразу ссылку на клип передавать?


Последний раз редактировалось udaaff; 06.05.2010 в 23:51.
Старый 06.05.2010, 23:49
Боня вне форума Посмотреть профиль Отправить личное сообщение для Боня Найти все сообщения от Боня
  № 9  
Ответить с цитированием
Боня

Регистрация: Mar 2010
Сообщений: 117
PHILOSOFF
Должна же быть причина по которой у одного человека всё работает у другого нет. У меня в publish settings:
Flash Player 9.
Strict Mode выключен.

Добавлено через 10 минут
Интернет сбоит - жуть...
udaaff
У меня несколько клипов на экране и при нажатии на один из них, клип передаёт своё имя в функцию родителя. И что бы не использовать структуру case. Я хочу сразу подставлять что-то вроде:
Код AS3:
var t_name1:String = name + "()";
new_shing : new this[t_name1];
а то придётся:
Код AS3:
switch(name){
  case "logka":
    new_thing : new ogka();
    break;
  case "styl":
    new_thing : new styl();
    break;
}
Добавлено через 23 минуты
Цитата:
Сообщение от Zebestov Посмотреть сообщение
так и есть.
у тебя new_thing — локальная переменная и видна только в пределах функции show_thing().
А подругому и немогу. Иначе ради чего я это затеял никак работать не будет. В чём интерес так это в том что я могу вообще не писать в функцие:
Код AS3:
var new_thing:thing;
new_thing: new thing();
А сразу могу написать
Код AS3:
new_thing: new thing();
Работает правильно.


Последний раз редактировалось udaaff; 07.05.2010 в 02:11.
Старый 07.05.2010, 15:55
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
dynamic нужно использовать ровно там, где это необходимо, а не где попало.
Приведи пример =) Ни разу не пользовался dynamic, в плане явного его объявления. Object`ы не в счёт.

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

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

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


 


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


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