2016-02-23 4 views
0

В принципе у меня очень простая видео галерея. Я хочу, чтобы, когда видео приостановлено, некоторые кнопки станут видимыми на экране, и когда он будет воспроизводиться, эти кнопки не будут видны. Это мой код:Попытка добавить прослушиватель событий для PLAYING/PAUSED_STATE_ENTERED, возвращая ошибку 1119

import fl.video.*; 
import fl.video.VideoEvent; 
import flash.events.Event; 

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo()); 
videoOne.addEventListener(Event.PAUSED_STATE_ENTERED, showInfo()); 

function showInfo() { 
    thumbnailOne.visible = true; 
    thumbnailTwo.visible = true; 
    thumbnailThree.visible = true; 
    videoGalleryInfo.visible = true; 
    infoHidden = 0; 
} 

function hideInfo() { 
    thumbnailOne.visible = false; 
    thumbnailTwo.visible = false; 
    thumbnailThree.visible = false; 
    videoGalleryInfo.visible = false; 
    infoHidden = 1; 
} 

Я попытался с помощью Event вместо VideoEvent и так далее, как это исправили проблему с добавлением другого слушателя событий ранее для полного события, но я всегда возвращался с

Video gallery, Layer 'ActionScript', Frame 77, Line 22 1119: Access of possibly undefined property PLAYING_STATE_ENTERED through a reference with static type Class. 

Video gallery, Layer 'ActionScript', Frame 77, Line 23 1119: Access of possibly undefined property PAUSED_STATE_ENTERED through a reference with static type Class. 

Я не понимаю, что я делаю неправильно. Не следует определять свойства путем импорта fl.video. *; и flash.events.Event ;?

EDIT: В случае, если это имеет значение, здесь приведена остальная часть моего кода для этой конкретной сцены, включая исправления, предложенные нулем. Я до сих пор получаю те же ошибки, плюс «1136:. Неверное количество аргументов Ожидаемое 1» ошибка

import flash.events.MouseEvent; 
import fl.video.*; 
import fl.video.VideoEvent; 
import flash.events.Event; 

stop(); 

homeButton.addEventListener(MouseEvent.CLICK, homePressed); 
soundButton.addEventListener(MouseEvent.CLICK, soundPressed); 
helpButton.addEventListener(MouseEvent.CLICK, helpPressed); 
exitButton.addEventListener(MouseEvent.CLICK, exitPressed); 

var videoPlaying:int = 0; 
var infoHidden:int = 0; 

videoOne.addEventListener(Event.COMPLETE, vid1Comp); 
function vid1Comp(event:Event) { 
    videoOne.visible = false; 
    showInfo(); 
} 



videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

function showInfo(e:Event):void { 
    thumbnailOne.visible = true; 
    thumbnailTwo.visible = true; 
    thumbnailThree.visible = true; 
    videoGalleryInfo.visible = true; 
    infoHidden = 0; 
} 

function hideInfo(e:Event):void { 
    thumbnailOne.visible = false; 
    thumbnailTwo.visible = false; 
    thumbnailThree.visible = false; 
    videoGalleryInfo.visible = false; 
    infoHidden = 1; 
} 

thumbnailOne.addEventListener(MouseEvent.CLICK, playVid1); 
function playVid1(event:MouseEvent) { 
    hideInfo(); 

    if (musicPlaying == 1) { 
     SoundMixer.stopAll(); 
     musicPlaying = 0; 
    } 

    videoOne.visible = true; 
    videoOne.play(); 
    videoPlaying = 1; 
} 

videoOne.visible = false; 

ответ

0

Я обнаружил, что решить эту проблему, вы должны использовать полный путь к этому событию, поэтому изменение

videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

в

videoOne.addEventListener(fl.video.VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(fl.video.VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

фиксированной его. Довольно просто, правда. Спасибо за вашу помощь, независимо от того, @null.

0

Эта строка вызывает функцию hideInfo:

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo()); 

но вместо этого следует передать функцию (и не назвать) вот так:

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo); 

константы для типа события, которые вы добавляете определены в VideoEvent классе, поэтому фактический код должен Лоо k нравится следующее:

videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 

Подпись функции должна быть функцией обратного вызова. Он должен принимать один параметр типа Event или соответствующий подкласс его:

function hideInfo(e:Event):void { 

Вы также можете сделать

function hideInfo(e:VideEvent):void { 

Но у вас нет никакой пользы для параметра в любом случае, так что нет никакого реального смысла, специализирующимся тип дополнительно излишне.


Я все еще получаю те же ошибки, плюс «1136:. Неверное количество аргументов Ожидаемые 1» ошибки

Это потому, что вы изменили сигнатуру функции, как я предложил. Как вы называете свои функции без аргументов:

showInfo(); 

Это приводит к ошибке, что вы получите.

Для того, чтобы избежать этого и , потому что вы не делаете любое использование параметра в этих функциях вы можете изменить функцию еще раз, чтобы принять значение по умолчанию null для параметра:

function showInfo(e:Event = null):void { 

Таким образом, если вызываемый без параметра параметр по умолчанию равен null, это нормально, потому что вам не нужен параметр в любом случае.

+0

Спасибо за помощь. Я попытался изменить свой код на то, как вы описали, но он дал мне больше ошибок в строках, где я объявляю функции hideInfo и showInfo. Передача функции также не исправила ошибку 1119. Это похоже на то, что мне не нравится, когда я пытаюсь прослушать событие, когда запускается игра или приостановленное состояние, и у меня была аналогичная проблема, о которой я говорил с ПОЛНОЙ. Я не знаю, действительно ли класс fl.video просто глючит или что-то, потому что у меня не было таких проблем, пока я не попытался его использовать. – Trekkx

+0

@Trekkx ваше редактирование добавило много кода, которого раньше не было. Я обратился к вопросам в редакции моего ответа, пожалуйста, проверьте, разрешает ли это проблему. – null

+0

Я изменил свои функции так, чтобы они имели e: Event = null, который исправил ошибку 1136. Я по-прежнему в основном, где я начал, хотя, поскольку я все еще получаю 1119 ошибок, когда я вызываю PLAYING_STATE_ENTERED и PAUSED_STATE_ENTERED. Есть ли решение этой проблемы или возможное обходное решение, чтобы я мог достичь аналогичной функциональности, не используя эти две константы? Спасибо за вашу помощь до сих пор, кстати, и жаль, что это неприятность. – Trekkx