Чтобы проверить, была ли переменная определена или нет, просто используйте if(typeof myVar == 'undefined')
или if(myVar === undefined)
.
Чтобы проверить, была ли переменная определена, но ей не присвоено значение, используйте следующее:
var myVar:MyClass;
if(myVar === null)
...
Теперь перейдем к вашему конкретному случаю: если переменная video
объявлена внутри функции / метода loadVideo
, она никогда не будет доступна вне этой области. Поэтому вам нужно объявить это на более высоком уровне, чтобы иметь возможность работать с ним.
Другие ошибки:
- в togglePause
параметр должен быть необязательным, чтобы разрешить ручной вызов функции
- в keyPressedDown
переменная key
не определена
Попробуйте это для разнообразия:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
var video:VideoLoader;
function togglePause(event:MouseEvent = null):void {
if(video)
video.videoPaused = !video.videoPaused; //video is undefined initially so this throws errors.
}
function keyPressedDown(event:KeyboardEvent):void {
switch (event.charCode) {
case 32: //Spacebar
togglePause();
break; // not necesary here, but good practice to add it!
}
}
function loadVideo(){ //called based on user interactions which happen later on
video = new VideoLoader(project_array[cp].project_display_files[0], {name:"myVideo", container:this, bgColor:0x000000, autoPlay:false, volume:1,onComplete:vidLoaded});
video.load(); //currently set up for only one video ([0])-->
}
Отказ от ответственности: не тестировался, но, вероятно, будет работать или, по крайней мере, будет близок к работе.
С уважением,
Алинь