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

stathem 16.03.2011 17:09

как обратится к методу экземпляра?
 
В этом классе создается экземпляр класса Hero, и по нажатию кнопки нужно обратиться к его методу moov().

Код AS3:

package  game{
        import flash.display.*;
        import flash.events.KeyboardEvent;
        import game.Hero;
 
        public class Game extends MovieClip{
 
                public function Game() {
                        var hero:Hero = new Hero();
                        addChild(hero);
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
                }
                public function key_down(e:KeyboardEvent):void
                {
                        trace(e.keyCode);
                        hero.moov();
                }
        }
}

Вот класс Hero где находится метод moov().

Код AS3:

package game
{
        import flash.display.MovieClip;
 
        public class Hero extends MovieClip
        {
                public function Hero()
                {
                        x = 200;
                        y = 300;
                        trace("entered");
                }
                public function moov()
                {
                        trace("mooved");
                }
        }
}

Выдает ошибку:

1120: Обращение несуществующего свойства hero.

Jewelz 16.03.2011 17:25

у вас hero - локальная переменная конструктора, вынесите ее в
Код AS3:

private var hero:Hero

а в конструкторе просто создайте его экземпляр:
Код AS3:

hero = new Hero();


alatar 16.03.2011 17:26

Код AS3:

package  game{
        import flash.display.*;
        import flash.events.KeyboardEvent;
        import game.Hero;
 
        public class Game extends MovieClip{
 
                private var _hero:Hero = new Hero();
 
                public function Game() {
                        _hero = new Hero();
                        addChild(_hero);
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
                }
                public function key_down(e:KeyboardEvent):void
                {
                        trace(e.keyCode);
                        _hero.moov();
                }
        }
}


stathem 16.03.2011 17:36

Спасибо, работает но теперь, когда доходит до hero.moov(); выдает сообщение:
TypeError: Error #1006: moov не является функцией.
at game::Game/key_down()

вот код с этим методом:

Код AS3:

package game
{
        import flash.display.MovieClip;
 
        public class Hero extends MovieClip
        {
                public function Hero()
                {
                        x = 200;
                        y = 300;
                        trace("entered");
                }
                public function moov()
                {
                        trace("mooved");
                }
        }
}


cleptoman 16.03.2011 18:14

ну да, moov является пончиком.)

а покажите весь ваш итоговый код.

stathem 16.03.2011 18:33

Это и есть весь код.
В классе Game создается экземпляр класса Hero, затем по событию необходимо запустить moov();

Код AS3:

package  game{
        import flash.display.*;
        import flash.events.KeyboardEvent;
        import game.Hero;
 
        public class Game extends MovieClip{
                        private var hero:Hero;
                public function Game() {
                        hero = new Hero();
                        addChild(hero);
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
                }
                public function key_down(e:KeyboardEvent):void
                {
                        trace(e.keyCode);
                        hero.moov();
                }
        }
}

Код AS3:

package game
{
        import flash.display.MovieClip;
 
        public class Hero extends MovieClip
        {
                public function Hero()
                {
                        x = 200;
                        y = 300;
                        trace("entered");
                }
                public function moov()
                {
                        trace("mooved");
                }
        }
}



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

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