Просмотр полной версии : изменение свойств мувиклипа не из главного класса
на рабочей области есть спрайт Fon.
єсть главный класс А, из него вызывается функция в классе В в которой присваиваю Fon.visible значение true
1120: Обращение несуществующего свойства Fon.
понимаю что скорее всего неправильно доступаюсь к спрайту, но никак не пойму как правильно
для этого нужно в класс B передать ссылку на Fon, когда создаете класс B:
//в главном классе передаем ссылку на фон внутрь класса B
var b:B = new B(Fon);
//в классе B
private var _fon:Fon;
//конструктор
public function B(fon:Fon){
//сохраняем ссылку на фон
_fon = fon;
}
// функция для того чтобы фон исчез
public function hideFon():void{
//по сохраненной ссылке делаем фон невидимым
_fon.visible = false;
}
1046: Тип не найден или не является константой времени компиляции: Fon
ругается на:public function B(fon:Fon){
что может быть не так?
alexandrratush
15.12.2013, 02:46
Вот что говорит справка
1046 Тип не найден или не является константой периода компиляции: %s.
Класс, использованный в качестве объявления типа, неизвестен или является выражением, значения которого во время выполнения отличались. Убедитесь в том, что вы импортируете верный класс и что место расположения его пакета не изменилось. Также убедитесь в том, что пакет, содержащий код (не импортированный класс), определен верно (например, проверьте, не использовали ли вы синтаксис пакета ActionScript 2.0 вместо ActionScript 3.0).
Это также может иметь место при обращении к классу, который не определен в используемом пространстве имен или не объявлен как public:
public class Foo{}
Если используется Flex™ Builder™ 2 и класс содержится в библиотеке, то в проекте необходимо указать путь к данному классу.
Скорее всего вы не импортировали класс Fon в классе B.
alexandrratush , Fon ето название мувиклипа, есть главный класс А который я импортировал
alexandrratush
15.12.2013, 03:25
А класс В?
Если вы передаете в него ссылку на Fon, то в классе B нужно импортировать Fon.
Лучше покажите код класса В, так будет быстрее.
я чет запутался...делал так, как в примере выше
package {
import flash.display.Sprite;
import А;
public class В extends Sprite {
private var _Fon:Fon;
public function В (fon:Fon) {
_Fon = fon;
_Fon.visible=true;
}
}
alexandrratush
15.12.2013, 12:19
Вам нужно связать ваш мувик Fon с классом ActionScript, сделать это можно в: библиотеке->ваш мувик->свойства->поставить галочку Экспорт для ActionScript и в первый кадр.
Зачем? Без этого visible не доступно что ли?
public function В (fon:DisplayObject) {
fon.visible = true;
}К чему импортировать все кастомное, тем более если это просто подкласс мувиков в IDE, не имеющий вообще никаких особенностей, кроме изображения/анимации? Зачем жестко связывать все классы там, где в этом нет необходимости?
alexandrratush
15.12.2013, 14:57
Wolsh да вы правы, я это упустил из виду. Запутался немного с этими классами А и В.
Fogflasher
15.12.2013, 16:32
alexandrratush, Скажите, а описание ошибки вы отсюда (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/compilerErrors.html) брали?
alexandrratush
15.12.2013, 16:47
alexandrratush, Скажите, а описание ошибки вы отсюда брали?
Да, а что?
Всем большое спасибо, наконец то разобрался)
Fogflasher
16.12.2013, 00:30
alexandrratush, Да нет, ничего такого, просто я и не знал, что существуют толковые расшифровки ошибок.
И нашел эту ссылку через гугл по цитате из вашего каммента. Если это наиболее полный и исчерпывающий перечень ошибок, который только возможен - в букмарки его. Надеюсь, можно считать, что более досконального ресурса для расшифровки ошибок не существует.
Есть ище один вопрос как добавить Мувиклип из Библиотеки на сцену не из главного класса?
var sprite:clip = new clip();
sprite.x = 400;
sprite.y = 300;
addChild(sprite);
если так делать то ничего не происходит
alexandrratush
19.12.2013, 10:12
Надеюсь, можно считать, что более досконального ресурса для расшифровки ошибок не существует.
Ну правильно, это же официальная справка по языку.
Есть ище один вопрос как добавить Мувиклип из Библиотеки на сцену не из главного класса?
Этот код рабочий, а где он находится?
alexandrratush , он находится в классе Б который вызивается из главного класса А
alexandrratush
19.12.2013, 13:41
А вы добавляете экземпляр класса Б в список отображения? Покажите код создания Б в главном классе А. Проблема наверное там.
alexandrratush,
var b:B = new B();
b.createMov();//функция в классе В в которой должен созтатся мувик
уверен что дело не в етом, потому что трейс в классе В все виводит
alexandrratush
20.12.2013, 00:02
А вы добавляете объект b в список отображения с помощью addChild()?
Экземпляр b является контейнером для экземпляра clip, который создается и добавляется в методе createMov(), но сам контейнер то не добавлен на сцену.
alexandrratush, спасибо большое, не знал что так надо делать, я только недавно начал работать с классами потому думаю будет ище много вопросов)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.