Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как использовать addChild внутри класса? (http://www.flasher.ru/forum/showthread.php?t=183493)

Snopka 23.08.2012 13:59

Как использовать addChild внутри класса?
 
Уважаемые флешеры, собственно вопрос: у меня есть функция, внутри неё находится addChild, который допустим должен выводить Sprite на Stage. Возможно такое реализовать?

Silicium 23.08.2012 14:19

Да, возможно, а в чем проблема?
И причем тут класс? В вопросе ни слова о классах.

Snopka 23.08.2012 14:34

Да, я просто забыл написать, извиняюсь.
вот например:
Код AS3:

package 
{
        import flash.display.*;
        import script.GVar;
 
        public class TraceAndButtons {
 
                public function TraceAndButtons() {
                        var btn:MyButton = new MyButton();
                        for(var i=0; i<=GVar.rowInput; i++){
        for(var j=0; j<=GVar.colInput; j++){
                GVar.traceX=i*GVar.step+GVar.gridCreateChild_posX;
                GVar.traceY=j*GVar.step+GVar.gridCreateChild_posY;
                trace("Ячейка ["+i+","+j+"] координаты x,y: ["+GVar.traceX+","+GVar.traceY+"]" );
                var btn:MyButton = new MyButton();
                addChild(btn);        /// что мне сделать что бы эта строка заработала?
                GVar.buttonId=GVar.buttonId+1;
                //btn.data = { id: buttonId };
                btn.x = GVar.traceX-100;
                btn.y = GVar.traceY-100;
                }
                        }
                }
 
        }
 
}


Wolsh 23.08.2012 14:58

Класс-то чей наследник? Не вижу у него метода addChild(), который Вы вызываете.
Если класс наследник мувиклипа, то так и пишите:
Код AS3:

public class TraceAndButtons extends MovieClip {


Snopka 23.08.2012 15:16

Вот у меня два класса задействованы при создании кнопок

первый
Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.display.SimpleButton;
        import flash.display.Shape;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import script.GVar;
 
        public class MyButton extends MovieClip
        {
                /*
                private var my_button:SimpleButton;
                */

                public function MyButton()
                {
                        init();
                }
 
                private function init():void
                {
 
 
                        createButton();
                        addChild(GVar.my_button);
                        addingListener();
                }
 
                private function createButton():void
                {
                        GVar.my_button=new SimpleButton();
                        GVar.my_button.x=50;
                        GVar.my_button.y=50;
 
                        GVar.my_button.upState=designButton(5);
                        GVar.my_button.overState=designButton(10);
                        GVar.my_button.downState=designButton(16);
                        GVar.my_button.hitTestState=GVar.my_button.upState;
                }
 
                private function designButton(rattio:Number):Shape
                {
                        var circle:Shape=new Shape();
                        circle.graphics.beginFill(0x000000,1);
                        circle.graphics.drawCircle(GVar.my_button.x,GVar.my_button.y,rattio);
                        circle.graphics.endFill();
                        return(circle);
                }
 
                private function addingListener():void
                {
                        GVar.my_button.addEventListener(MouseEvent.CLICK,clicked);
                        function clicked(m:MouseEvent):void
                        {
                                trace('ok');
                        }
 
                }
        }
}

и собственно второй
Код AS3:

package 
{
 
        import script.GVar;
        import MyButton;
 
        public class TraceAndButtons  {
 
                public function TraceAndButtons() {
                        var btn:MyButton = new MyButton();
                        for(var i=0; i<=GVar.rowInput; i++){
        for(var j=0; j<=GVar.colInput; j++){
                GVar.traceX=i*GVar.step+GVar.gridCreateChild_posX;
                GVar.traceY=j*GVar.step+GVar.gridCreateChild_posY;
                trace("Ячейка ["+i+","+j+"] координаты x,y: ["+GVar.traceX+","+GVar.traceY+"]" );
                var btn:MyButton = new MyButton();
                addChild(btn);
                /*
                var btn:MyButton = new MyButton();
                this.addChild(btn);
                */

                GVar.buttonId=GVar.buttonId+1;
                //btn.data = { id: buttonId };
                btn.x = GVar.traceX-100;
                btn.y = GVar.traceY-100;
                }
                        }
                }
 
        }
 
}

вызываю всё на сцене
Код AS3:

btn_ButAndTrace.addEventListener(MouseEvent.CLICK, addButtonsAndTraceIt)
function addButtonsAndTraceIt(event:MouseEvent) :void
{
        var traceAndButtons:TraceAndButtons = new TraceAndButtons();
        addChild(TraceAndButtons);
}

при таком раскладе могу я использовать addChild?

Silicium 23.08.2012 22:33

Чтобы добавлять кнопки к списку отображения traceAndButtons, нужно чтобы TraceAndButtons наследовал MovieClip. Так, как это уже Wolsh написал. Абсолютно напрасно игнорировать его ответ.


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

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