PDA

Просмотр полной версии : При создании экземпляра в ручную после компиляции пропадает текст


motor4ik
16.10.2006, 00:11
Вобщем в библиотеке есть мувик внутри которого динамический текст, этот мувик пролинкован к классу, в котором описаны роловеры, если атачить программно, все работает, текст в динамическом поле отображается, если руками вынести на раб поле и откомпилить. текст пропадает. не пойму что может быть (

motor4ik
16.10.2006, 00:12
думал это из за галочки Export in first frame , убрал не помогло (

etc
16.10.2006, 00:35
Я попробовал — работает всё.
Что за ролловеры? Покажи код.

motor4ik
16.10.2006, 12:18
dynamic class Butt extends MovieClip {

public function Butt(){
}

private function _onRelease():Void{
}

//инициализация кнопки (присваиваем Label кнопки и функцию при отпускании)
public function init(txt:String,func:Function):Void{

this.text_mc.text_txt.text=txt;
trace(this.text_mc.text_txt.text);
this._onRelease=func;
}

public function onRollOver():Void{
this.gotoAndStop(2);
}

public function onRollOut():Void{
this.gotoAndStop(1);
}

public function onPress():Void{
this.gotoAndPlay(3);
}

public function onRelease():Void{
this.gotoAndPlay(5);
this._onRelease();
}

}

motor4ik
16.10.2006, 12:19
что самое интересное trace выводит тест нормально...ничего не пойму..

motor4ik
16.10.2006, 13:05
что самое интересное, в пустом мувике только кнопку сделал све работает текст не пропадает...т.е. и программно и вручную созданые кнопки нормально работают...блин уже промучился с этим глюком

т.е. как только создаю кнопку вручную, во всех остальных кнопках (программных) тоже тест пропадает , неужели тупо глюк флэша, че делать блин ((

etc
16.10.2006, 13:28
Скорее всего где-то перекрываются переменные или ссылки на поля…

motor4ik
16.10.2006, 14:27
вот это кстати вполне реально...

etc
16.10.2006, 14:33
trace спасёт тебя. Проверял правильность ссылки на поле и вообще, на поле ссылка или на объект.
А ещё лучше прописывать все свойства класса, а не дописывать dynamic из-за лени.

motor4ik
16.10.2006, 15:04
А ещё лучше прописывать все свойства класса, а не дописывать dynamic из-за лени.

это что значит? где прописывать?

etc
16.10.2006, 15:26
В секции переменных.
private var text_mc:MovieClip; и т.п.

motor4ik
16.10.2006, 18:45
согласен...просто это не от лени..скорее от незнания..

я станлкнулся с такой проблемой, когда в классе описывал функцию которая присваивалась событию onPress() , класс ругался на все свойства объекта которому присваивалось событие...т.к. я там использовал this, не смог обойти никак кроме dynamic , по этому это передалось и сюда, но здесь я уже понял что он не ругается

motor4ik
16.10.2006, 18:51
вот про что я говорю:

class ClassName {

private target_mc:MovieClip;

public function ClassName(target:MovieClip){
target_mc=target;
target_mc.p=1;
target_mc.onPress=_onPress;
}

function _onPress(){
trace(this.p);
}
}

компилятор соответственно ругается, говорит у this нет такого свойства p , как обойти не знаю...


такая запись соответственно не дает ошибок


target_mc.onPress=function(){
trace(this.p);
}


но она не очень удобна

iNils
16.10.2006, 19:35
1. Надо объявить public var p:Number;
2. this использовать необязательно
3. И есть еще такой хак this["p"] (это так, на будущее:D)

motor4ik
16.10.2006, 19:39
1 ну объявлять все свойста другого объекта это лишнее
2 да необязательно всеровно заругается
3 вот про это даже не подумал...

вобщем проще dynamic написать и не париться

iNils
16.10.2006, 19:49
1 ну объявлять все свойста другого объекта это лишнееНу, это смотря как посмотреть. Ты ведь можешь и не написать target_mc.onPress=_onPress или вызвать _onPress не через target_mc, и что тогда будет? :)
2 да необязательно всеровно заругаетсяЯ не к тому что ругаться будет, а что можно не писать вобще.

motor4ik
18.10.2006, 18:19
вобщем еще один глюк, при добавлении это символа на рабочий стол в динамических полях перестают отображатся некоторые симолы..к чему бы это???

motor4ik
18.10.2006, 18:28
БРЕД!!! Или у меня реально с флэшом беда.. Сейчас что сделал, поставил у символа в текст, Don`t embed откомпилил, все работает текст везде отображается првильно. поставил обратно Embed выделил те же пункты, откомпилил обратно все отображается четко, что за ЧЕРТ! я сутки потратил на то чтобы найти пути, неправильные ,выявить ошибку, а это оказалась просто тупость флэша, бред в который раз

Kikasso
19.10.2006, 19:45
Наверное, вручную кинутые на сцену кнопки не успевают проининициироваться.
Предлагаю компромисс, так сказать полупрограммный метод.
Расставляешь вручную на сцене невидимые крестики, куда должна кнопка встать, и пускай каждый крестик onLoad кнопку к себе приаттачит. Все заработает, а потом на досуге ковыряйся в коде.
*****************************
УПС! Извините, не дочитал.