Определение fl.video.FLVPlayback не найдено - PullRequest
3 голосов
/ 10 августа 2011

Я в тупике. У меня есть два флеш-файла, которые я создаю.

Файл A имеет MovieClip на сцене, который связан с классом, в который я импортирую fl.video.FLVPlayback Файл B также пытается импортировать fl.video.FLVPlayback.

Файл B выдает ошибку COMPILE TIME, что он не может найти определение для fl.video.FLVPlayback. Я заметил, что мой FlashDevelop также не предлагает подсветку синтаксиса для этой строки.

Оба экспортируют для одной и той же версии FlashPlayer (10). Оба создаются на одной и той же платформе, в одном и том же программном обеспечении (CS4). Я не перепутал ни с какими настройками публикации, кроме того, что файл B связан с классом документов.

Интересно, что файл A в конечном итоге будет загружен в файл B в контексте файла B.

Что случилось? Я понятия не имею, с чего начать.

Заранее спасибо.

Ответы [ 3 ]

10 голосов
/ 10 августа 2011

Если вы не используете компонент FLVPlayback (перетаскиваемый из библиотеки компонентов на сцену), то у Flash нет доступа к пакету fl из коробки для публикации.

Вам придетсявключите либо исходную папку компонента, либо .swc в свой путь к классу (исходная папка перейдет на вкладку «Исходный путь» ваших параметров публикации as3, .swc на вкладку «Путь к библиотеке»), чтобы ваш класс работал.

Исходная папка: C: \ Program Files (x86) \ Adobe \ Adobe Flash CS4 \ Common \ Configuration \ Source источника \ ActionScript 3.0 \ FLVPlayback

.SWC находится в каталоге: C: \ Program Files (x86) \ Adobe \ Adobe Flash CS4 \ Common \ Configuration \ Components \ Video

Возможно, проще включить SWC, как вы можетеСкопируйте и вставьте .swc прямо в папку вашего проекта, если хотите.

3 голосов
/ 12 декабря 2012

Опираясь на ответ Sapptime, я хотел бы добавить, что вы можете создавать различные профили в настройках публикации.

Таким образом, вы можете создать профиль, включающий компонент FLVPlayback, импортировав файл .swc и использовать этот профиль, когда вам нужно работать с FLVPlayer. Добавляет в проект около 100 КБ.

Таким образом, вам не нужен компонент FLVPlayback в вашей библиотеке или на вашей сцене. Вместо этого вы можете импортировать класс FLVPlayback, как и любой другой класс в вашем проекте, и создавать экземпляры FLVPlayback в коде ActionScript.

//import:
import fl.video.FLVPlayback;

//Instantiate:
private var player:FLVPlayback = new FLVPlayback();

Я добавил класс Videoplayer.as (потому что не могу найти способ присоединить его), который я сделал для проекта и быстро и грязно удалил для некоторого дополнительного контента, но он должен работать :) это, как есть, изменить его или получить вдохновение.

Поместите Videoplayer.as в папку src вашего проекта и создайте новый экземпляр. Используйте сеттеры для управления им.

//Instantiate
var MyPLayer:Videoplayer = new Videoplayer();

//Use setters
MyPLayer.SetVideopath = path to flv file;
MyPLayer.SetVideoAutoplay = true; // or false
//... and so on

// add to displaylist
this.addChild(MyPlayer);

// Load video
MyPlayer.Load();

// start playing
MyPlayer.Play();

и вот класс Videoplayer ...

package  {
import fl.video.*;
import flash.events.*;
import flash.display.Sprite;
import flash.display.Shape;

public class Videoplayer extends Sprite {

    // VIDEO
    private var player:FLVPlayback = new FLVPlayback();
    private static var videoPath:String="";
    private var w:Number = 1280;
    private var h:Number = 720;
    private var vol:Number = 0;
    private var autoplay:Boolean = false;
    private var autorewind:Boolean = false;
    private var Loop:Boolean = false;
    private var bgcolor:uint = 0x000000;
    private var HasError:Boolean=false;
    private var playerid:Number;
    private var SeekSecToStop:Number=0;
    private var BufferTime:Number=0;

    private var videoBG:Shape;

    // ===============================================================================================
    // CONSTRUCTOR
    // ===============================================================================================
    public function Videoplayer() {
        super();

        trace("Videoplayer");

        this.addChild(player);

        player.addEventListener(VideoEvent.STATE_CHANGE, VidState, false, 0, true);
        player.addEventListener(VideoEvent.READY, VidReady, false, 0, true);
        player.addEventListener(VideoEvent.AUTO_REWOUND, VidRewinded, false, 0, true);
        player.addEventListener(VideoEvent.STOPPED_STATE_ENTERED, VidStopped, false,0,true);

    }

    // ===============================================================================================
    // SET VIDEO PROPS
    // ===============================================================================================
    private function setVidProps():void {
        player.name = "player";
        player.skinBackgroundColor = getVideoBGcolor;
        player.skinBackgroundAlpha = 0;
        player.registrationX = 0;
        player.registrationY = 0;
        player.setSize(getVideoWidth,getVideoHeight);
        player.scaleMode = "maintainAspectRatio"; // exactFit, noScale, maintainAspectRatio
        //player.fullScreenTakeOver = false;
        player.isLive = false;
        player.bufferTime = BufferTime;
        player.autoRewind = getVideoAutorewind;

        player.volume = vol;

    }

    // ===============================================================================================
    // LOAD
    // ===============================================================================================
    public function Load():void {
        trace("Load");
        setVidProps();
        player.source = getVideopath;
    }

    // ===============================================================================================
    // PLAY
    // ===============================================================================================
    public function Play():void {
        player.playWhenEnoughDownloaded();
        UnMute();
    }

    public function Pause():void {
        player.pause();
    }

    public function Stop():void {
        //player.seek(SeekSecToStop);
        player.stop();
        //player.pause();
    }

    public function SeekAndStop():void {
        player.seek(SeekSecToStop);
        player.pause();
    }

    public function SeekAndPlay(n:Number=0):void {
        player.seek(n);
        Play();
    }

    public function Fullscreen():void {
        //player.fullScreenTakeOver = true;
        //player
    }

    public function Mute():void {
        player.volume = 0;
    }

    public function UnMute():void {
        player.volume = 1;
    }

    public function Volume(n:Number):void {
        player.volume=n;
    }

    // ===============================================================================================
    // VidReady
    // ===============================================================================================
    private function VidReady(e:Event):void {
        trace("VidReady");
        //player.removeEventListener(VideoEvent.READY, VidReady);
        player.fullScreenTakeOver = false;
        if (autoplay) {
            player.autoPlay = autoplay;
            Play();
        } else {
            player.play();
            SeekAndStop();
        }
        dispatchEvent(new VideoEvent(VideoEvent.READY));
    }

    // ===============================================================================================
    // VidStopped
    // ===============================================================================================
    private function VidStopped(e:Event):void {
        trace("VidStopped");
        //dispatchEvent(new VideoEvent(VideoEvent.STOPPED));
        if(Loop) {
            //SeekAndPlay();
            Play();
        } else {
            dispatchEvent(new VideoEvent(VideoEvent.STOPPED_STATE_ENTERED));
        }
    }

    // ===============================================================================================
    // VidRewinded
    // ===============================================================================================
    private function VidRewinded(e:Event):void {
        trace("VidRewinded");
    }

    // ===============================================================================================
    // VidState
    // ===============================================================================================
    private function VidState(e:Event):void {

        var flvPlayer:FLVPlayback = e.currentTarget as FLVPlayback;

        //Log("VideoState 1 : "+flvPlayer.state);

        if (flvPlayer.state==VideoState.CONNECTION_ERROR)   {
            trace("FLVPlayer Connection Error! -> path : "+flvPlayer.source);
            //dispatchEvent(new VideoEvent(VideoEvent.CONNECTION_ERROR));
            HasError=true;
            //CleanUp();
        } else if (flvPlayer.state==VideoState.BUFFERING)   {
            trace("BUFFERING");
        } else if (flvPlayer.state==VideoState.DISCONNECTED)    {
            trace("DISCONNECTED");
        } else if (flvPlayer.state==VideoState.LOADING) {
            trace("LOADING");
        } else if (flvPlayer.state==VideoState.PAUSED)  {
            trace("PAUSED");
        } else if (flvPlayer.state==VideoState.RESIZING)    {
            trace("RESIZING");
        } else if (flvPlayer.state==VideoState.REWINDING)   {
            trace("REWINDING");
        } else if (flvPlayer.state==VideoState.SEEKING) {
            trace("SEEKING");
        } else if (flvPlayer.state==VideoState.PLAYING) {
            trace("PLAYING");
        } else if (flvPlayer.state==VideoState.STOPPED) {
            trace("STOPPED");
            //flvPlayer.pause();
        } else if (flvPlayer.state==VideoState.RESIZING)    {
            trace("RESIZING");
        }
    }

    // ===============================================================================================
    // SETTERS & GETTERS
    // ===============================================================================================
    public function set SetPlayerId(n:Number):void {
        playerid=n;
    }
    public function get getPlayerId():Number {
        return playerid;
    }
    public function set SetSeekSecToStop(n:Number):void {
        SeekSecToStop=n;
    }
    public function get getSeekSecToStop():Number {
        return SeekSecToStop;
    }
    public function set SetVideoLoop(b:Boolean):void {
        Loop = b;
    }
    public function get getVideoLoop():Boolean {
        return Loop;
    }       
    public function set SetVideoAutorewind(b:Boolean):void {
        autorewind = b;
    }
    public function get getVideoAutorewind():Boolean {
        return autorewind;
    }
    public function set SetVideoAutoplay(b:Boolean):void {
        autoplay = b;
    }
    public function get getVideoAutoplay():Boolean {
        return autoplay;
    }
    public function set SetVideopath(s:String):void {
        videoPath = s;
    }
    public function get getVideopath():String {
        return videoPath;
    }
    public function set SetVideoWidth(n:Number):void {
        w = n;
    }
    public function get getVideoWidth():Number {
        return w;
    }
    public function set SetVideoHeight(n:Number):void {
        h = n;
    }
    public function get getVideoHeight():Number {
        return h;
    }
    public function set SetVideoBGcolor(n:uint):void {
        bgcolor = n;
    }
    public function get getVideoBGcolor():uint {
        return bgcolor;
    }
    public function get getPlayerState():String {
        return player.state;
    }
    public function get GetHasError():Boolean {
        return HasError;
    }
}
}
2 голосов
/ 29 августа 2011

Необходимо убедиться, что компонент FLVPlayback присутствует в вашей библиотеке и экспортирован для ActionScript (который должен быть настройкой по умолчанию).

Чтобы добавить его в библиотеку, просто откройте панель Компоненты ( Окно -> Компоненты ) и разверните группу с именем Видео и перетащите FLVPlayback в вашей библиотеке. Не нужно ставить его на сцену.

По умолчанию он должен быть экспортирован как " fl.video.FLVPlayback ".

Приветствия

...