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

engineer_f_R 09.04.2010 01:40

Обращение к переменным экземпляра.
 
Есть класс А и класс Б. В экземпляре класса А (ЭА) создаются переменные. Как в классе Б обратиться к переменным экземпляра класса А (ЭА)?

Gaen 09.04.2010 04:35

Передать методу Б ссылку на ЭА и обратиться через неё

engineer_f_R 09.04.2010 08:14

А подскажите пожалуйста синтаксис этой беды или где про это почитать.

Artic 09.04.2010 08:49

Цитата:

В экземпляре класса А (ЭА) создаются переменные
как создаются ? если где то в методах то не как

а вобще

Код AS3:

package
{
    public class A
    {
        public var someVar:String = "varClassA";
        public function A()
        {
 
        }
    }
}
 
package
{
    public class B
    {
        public function B(linkClassA:A)
        {
              trace(linkClassA.someVar) // "varClassA"
        }
    }
}
 
package
{
    public class Main
    {
        public function Main()
        {
              var classA:A = new A();
              var classB:B = new B(classA);
        }
    }
}

можно через статик сделать

Код AS3:

package
{
    public class A
    {
        public static var someVar:String = "varClassA";
        public function A()
        {
 
        }
    }
}
 
package
{
    public class B
    {
        public function B()
        {
              trace(A.someVar) // "varClassA"
        }
    }
}
 
package
{
    public class Main
    {
        public function Main()
        {
              var classB:B = new B();
        }
    }
}

но запомните, что static определяет переменную/функцию, как принадлежащей КЛАССУ ! а не экземпляру

engineer_f_R 09.04.2010 08:58

Я делаю так:
Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        public class MainClass extends MovieClip
        {
                public var keyboardControl:KeyboardControl = new KeyboardControl ();
                var hero:HeroBase = new HeroBase();
                var heroM:HeroMove = new HeroMove();
 
                public function MainClass ()
                {
                        stage.addChild(keyboardControl);
                        keyboardControl.addEvents();
 
                        stage.addChild(hero);
                        hero.setCoordinates(50,50);
 
                        stage.addChild(heroM);
                        heroM.addEvents();
                }
}
 
}

Код AS3:

package {
        import flash.display.*;
        import flash.ui.*;
        import flash.events.*;
        import flash.events.KeyboardEvent;
 
        public class KeyboardControl extends MovieClip {
 
                public var leftKeyIsDown:Boolean=false;
                public var rightKeyIsDown:Boolean=false;
                public var upKeyIsDown:Boolean=false;
                public var downKeyIsDown:Boolean=false;
                var keyPressed:int;
                var keyReleaseCode:int;
 
                public function KeyboardControl():void {
 
 
                }
 
                public function addEvents(){
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressFunction);
                        stage.addEventListener(KeyboardEvent.KEY_UP, keyReleaseFunction);
 
                }
 
 
 
                public function keyPressFunction(e:KeyboardEvent):void {
 
                        keyPressed=e.keyCode;
 
                        if (keyPressed==Keyboard.RIGHT) {
                                rightKeyIsDown=true;
                        }
                        if (keyPressed==Keyboard.LEFT) {
                                leftKeyIsDown=true;
                        }
                        if (keyPressed==Keyboard.UP) {
                                upKeyIsDown=true;
                        }
                        if (keyPressed==Keyboard.DOWN) {
                                downKeyIsDown=true;
                        }
                }
 
 
                function keyReleaseFunction(e:KeyboardEvent):void {
                        keyReleaseCode=e.keyCode;
                        if (keyReleaseCode==Keyboard.RIGHT) {
                                rightKeyIsDown=false;
                        }
                        if (keyReleaseCode==Keyboard.LEFT) {
                                leftKeyIsDown=false;
                        }
                        if (keyReleaseCode==Keyboard.UP) {
                                upKeyIsDown=false;
                        }
                        if (keyReleaseCode==Keyboard.DOWN) {
                                downKeyIsDown=false;
                        }
                }
        }
 
}

Код AS3:

package 
{
        import flash.display.*;
        import flash.ui.Keyboard;
        import flash.events.*;
 
        public class HeroMove extends MovieClip
        {
                public function HeroMove()
                {
 
                }
 
                public function addEvents(){
                        stage.addEventListener(Event.ENTER_FRAME, everyFrame)
 
                }
 
 
                public function everyFrame(){
 
                        if( keyboardControl.leftKeyIsDown){}
                        if( keyboardControl.rightKeyIsDown){}
                        if( keyboardControl.upKeyIsDown){}
                        if( keyboardControl.downKeyIsDown){}
 
                }
 
        }
 
}

и при компиляции мне ругаются что keyboardControl.leftKeyIsDown - неизвестное свойство. Как мне его сделать известным?

Artic 09.04.2010 09:05

Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        public class MainClass extends MovieClip
        {
                public var keyboardControl:KeyboardControl = new KeyboardControl ();
                private var hero:HeroBase = new HeroBase();
                private var heroM:HeroMove;
 
                public function MainClass ()
                {
                        heroM  = new HeroMove(keyboardControl);
 
                        stage.addChild(keyboardControl);
                        keyboardControl.addEvents();
 
                        stage.addChild(hero);
                        hero.setCoordinates(50,50);
 
                        stage.addChild(heroM);
                        heroM.addEvents();
                }
}
 
}
 
package
{
        import flash.display.*;
        import flash.ui.Keyboard;
        import flash.events.*;
 
        public class HeroMove extends MovieClip
        {
                private var keyboardControl:KeyboardControl
                public function HeroMove(kControl:KeyboardControl)
                {
                      keyboardControl = kControl;
                }
 
                public function addEvents(){
                        stage.addEventListener(Event.ENTER_FRAME, everyFrame)
 
                }
 
 
                public function everyFrame(){
 
                        if( keyboardControl.leftKeyIsDown){}
                        if( keyboardControl.rightKeyIsDown){}
                        if( keyboardControl.upKeyIsDown){}
                        if( keyboardControl.downKeyIsDown){}
 
                }
 
        }
 
}



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

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