Actionscript 3.0: добавление класса документа вызывает ошибки

Я пытаюсь изучить Actionscript 3.0 с помощью игры, которую я создаю во Flash CS6, и у меня возникли некоторые проблемы с классом документов. Изначально у меня было рабочее меню с некоторыми сценариями для событий клавиатуры и звука. Я понял, что мне нужно хранить некоторые переменные таким образом, чтобы я мог получить к ним доступ из любого фрейма, поэтому я создал класс документа с пустым классом и установил в своей игре ссылку на него, и теперь мой сценарий меню генерирует ошибку компилятора. Я получаю сообщение об ошибке "1046: Тип не был найден или не являлся константой времени компиляции: KeyboardEvent", что не имеет никакого смысла для меня, так как заранее работало очень хорошо. Кто-нибудь знает, в чем может быть проблема? Спасибо!

Класс документа:

package  
{  
    import flash.display.MovieClip;  
    public class Main extends MovieClip  
    {  

    }  
}

Скрипт меню:

import flash.utils.getDefinitionByName;
import flash.ui.Keyboard;

stop();//Used to stay on the current frame

var selection:int = 0;//Will be used to determine which button has its "On" animation activated
var canMove:Boolean = true;

var menuSong:Sound = new MenuSong();
menuSong.play (0 , 9999);//Plays and loops(9999 times) menu theme

var menuMove:Sound = new MenuMove();
var menuSelect:Sound = new MenuSelect();

stage.addEventListener(KeyboardEvent.KEY_DOWN, move);//Calls move function when a key is pressed

function move(event:KeyboardEvent):void{//The line causing the error
    if(canMove){
        if(event.keyCode == 40){
            selection = (selection + 1)%3;//Occurs when down key is pressed
            menuMove.play();
        }
        else if(event.keyCode == 38){
            selection = (selection + 2)%3;//Occurs when up key is pressed
            menuMove.play();
        }
        else if(event.keyCode == 32){
            canMove = false;
            SoundMixer.stopAll();
            menuSelect.play();
            fadeOut.gotoAndPlay(1);
        }

        switch(selection){
            case 0:
                this.singlePlayer.gotoAndPlay("On");
                this.multiplayer.gotoAndStop("Off");
                this.credits.gotoAndStop("Off");
                break;
            case 1:
                this.singlePlayer.gotoAndStop("Off");
                this.multiplayer.gotoAndPlay("On");
                this.credits.gotoAndStop("Off");
                break;
            case 2:
                this.singlePlayer.gotoAndStop("Off");
                this.multiplayer.gotoAndStop("Off");
                this.credits.gotoAndPlay("On");
                break;  
        }//All this just tells the selected button (Based on the selection variable)
        //to play its "On" animation, and the other buttons to play their "Off" animation.
    }
}

1 ответ

Вам нужно импортировать flash.events.KeyboardEvent как вы используете его в своем коде (скрипт меню).

Почему вы не используете сценарий, который вы назвали "Сценарий меню", в качестве класса документа? Если целью вашего SWF является то, что разработано в коде скрипта меню, то это должен быть класс документа.

Так или иначе, если вы используете stage.addEventListener(KeyboardEvent.KEY_DOWN, move); в вашем коде вы должны импортировать flash.utils.KeyboardEvent, То же самое для звука ( import flash.media.Sound) & SoundMixer (import flash.media.SoundMixer).

Другие вопросы по тегам