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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Несуществующее свойство класс подгружаемого swf

Код AS3:
public var money_load:Class = ApplicationDomain.currentDomain.getDefinition("sprite_money") as Class;
		public var money:Sprite;
 
                        money = new money_load();
			money.x = 115, 1;
			money.y = 28, 75;
			addChild(money);
 
                        money.txt_money.text = "0";
Access of possibly undefined property txt_money through a reference with static type flash.display:Sprite

Вот такую ошибку выдаёт. Сам объект нормально создается, но почему-то к свойствам внутри самого спрайта обратиться нельзя, хотя он там есть


Последний раз редактировалось Godwarlock; 07.02.2015 в 22:43.
Старый 07.02.2015, 22:51
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
public var money:money_load;

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Код AS3:
money = new money_load() as Sprite;

Старый 07.02.2015, 23:10
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 4  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от callme Посмотреть сообщение
public var money:money_load;
Не работает, пишет

Код AS3:
col: 20 Error: Type was not found or was not a compile-time constant: money_load.
Цитата:
money = new money_load() as Sprite;
Этот вариант также не срабатывает, выдаёт ту же ошибку, что нет свойства такого

Старый 08.02.2015, 00:03
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 5  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Покажите код money_load

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

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
public var money:Object;
...
addChild(DisplayObject(money));

Старый 08.02.2015, 00:22
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 7  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Воо спасибо большое callme вот так работает. Можете объяснить почему?

illuzor
Код AS3:
package  {
 
	import flash.display.MovieClip;
 
 
	public class sprite_money extends MovieClip {
 
 
		public function sprite_money() {
			// constructor code
		}
	}
 
}

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

Регистрация: Dec 2014
Сообщений: 312
Пытался написать тебе ответ кратко и доходчиво. Но не получается.

Object и MovieClip - динамические классы, ты можешь добавлять им свойства на лету.

Код AS3:
var mc:MovieClip = new MovieClip();
mc.blablabla = 5;
mc.azaza = 'Ура, товарищи!';
Sprite - закрытый класс, с ним такое не работает. Компилятор проверяет есть ли у класса Sprite такое свойство как "txt_money". Такого свойства у класса Sprite нет, поэтому компилятор ругается.

Более подробно читай в книге Колина Мука "ActionScript 3.0 для Flash". Глава "Динамические возможности языка ActionScript".

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Sprite - закрытый класс
А MovieClip или DisplayObject значит открытые?
Спрайт просто не объявлен как dynamic
Можно написать свой класс, наследник спрайта и объявить его как dynamic

Код AS3:
public dynamic class MyDynamicClass extends Sprite {
 
}
И тогда с ним тоже прокатит динамическое добавление.

А зачем вообще эта конструкция используется?
Цитата:
Код AS3:
public var money_load:Class = ApplicationDomain.currentDomain.getDefinition("sprite_money") as Class;
В ней действительно есть необходимость?

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

Регистрация: Dec 2014
Сообщений: 312
Я использовал терминологию из русского перевода книги Мука.

По его терминологии Object и MovieClip - динамические классы, Sprite и DisplayObject - закрытые классы (в англ. было sealed).

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

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

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


 


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


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