Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   помогите удалить ссылку объект (http://www.flasher.ru/forum/showthread.php?t=129155)

adi.belis 26.08.2009 05:41

помогите удалить ссылку объект
 
всем привет !

пре попытке удалить ссылку на объект прыгает ошибка :

1050: Cannot assign to a non-reference value.

Код AS3:

var tf:TextField;
var container :Sprite = new Sprite();
addChildAt (container,0);
button.addEventListener (MouseEvent.CLICK,addTextField);
function addTextField (evt:MouseEvent)
{
        while (container.numChildren>0)
        {
                          //Error
                container.getChildAt(0) as TextField = null;
        }
        for (var i:Number=0; i<4; i++)
        {
                tf = new TextField();
                tf.y = i *23;
                tf.text = "temp text";
                container.addChild(tf);
        }
}

здесь на сайте пробегала инфа что вроде достаточно убрать класс методом "removeChild", и если нет "listeners" или мягкие ссылки объект будет удален .
насколько это верно ?

udaaff 26.08.2009 05:46

Цитата:

здесь на сайте пробегала инфа что вроде достаточно убрать класс методом "removeChild", и если нет "listeners" или мягкие ссылки объект будет удален .
насколько это верно ?
Так и есть.
И если на объект нету больше ссылок.

adi.belis 26.08.2009 06:04

а если мои объект (динамически инстанс) наследует класс в котором объявляются Fonts, setTextFormat , TextFilds :

Код AS3:

package com
{
        import flash.text.Font;
        import flash.text.TextField;
        import flash.text.TextFormat;
 
        public class regionMyltyTetxFild extends TextField
        {
                public function regionMyltyTetxFild (lang:Number,s:String,w:Number,align:Boolean)
                {
 
                        var textFormat:TextFormat = new TextFormat();
                        var newHebFont:Font = new hebFont();
 
                        this.selectable = false;
                        this.embedFonts = true;
                        this.mouseEnabled = false;
 
                        textFormat.color = 0x59311c;
                        this.width = w;
 
                        //heb
                        if (lang == 1)
                        {
                                textFormat.font = newHebFont.fontName;
 
                                if (align == true)
                                {
                                        textFormat.size = 25;
                                }
                                else
                                {
                                        textFormat.size = 17;
                                }
                                this.text = hebInvert(s);
                        }
                        textFormat.align = "center";
                        this.setTextFormat (textFormat);
                }
                public function hebInvert (s:String):String
                {
                        var tempWord:String = "";
                        for (var i :Number =0; i<s.length; i++)
                        {
                                tempWord += s.charAt(s.length - i - 1);
                        }
                        return tempWord;
                }
        }
}

тоже достаточно удалит методом "removeChild" и когда придет время "GC" его уберет

Код AS3:

var customTextField : regionMyltyTetxFild = new regionMyltyTetxFild ();
addChild(customTextField );
removeChild(customTextField );


udaaff 26.08.2009 06:10

Если выполнены все предыдущие условия, то да. И названия классов пишуться с большой буквы.


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

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