Форум 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=178607)

A.E.M. 25.04.2012 15:58

Не работает выражение
 
Код AS3:

package{
        import flash.display.MovieClip;
 
        public class Client extends MovieClip{
 
                public function Client(){
 
                        var root:Composite = new Composite("root");
 
                        root.add(new Composite("node 1"));
                        root.getChild(1).add(new Leaf("leaf 1")); // при наличии вот этой строки появляется ошибка
 
                }
        }
}

ошибка в панели output
Код:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at Client()


bublic_bicubic 25.04.2012 15:59

root.getChild(1) = null скорее всего

A.E.M. 25.04.2012 16:06

Цитата:

Сообщение от bublic_bicubic (Сообщение 1076967)
root.getChild(1) = null скорее всего

Да, действительно. Но не понятно почему.

Вот код Composite.as
Код AS3:

package{
 
        public class Composite extends Component{
 
                private var sName:String;
                private var aChildren:Array;
 
                public function Composite(sNodeName:String){
                        this.sName = sNodeName;
                        this.aChildren = new Array();
                }
 
                override public function add(c:Component):void{
                        aChildren.push(c);
                }
 
                override public function operation():void{
                        trace(this.sName);
                        for each (var c:Component in aChildren){
                                c.operation();
                        }
                }
 
                override public function getChild(n:int):Component{
                        if((n > 0) && (n < aChildren.length)){
                                return aChildren[n-1];
                        } else {
                                return null;
                        }
                }
        }
}

Добавлено через 10 минут
нашел, не
Код AS3:

override public function getChild(n:int):Component{
                        if((n > 0) && (n < aChildren.length)){

, а
Код AS3:

override public function getChild(n:int):Component{
                        if((n > 0) && (n < aChildren.length+1)){


Wolsh 25.04.2012 17:32

Название темы не отражает сути вопроса.


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

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