在FlashDevelop中使用FLVplayback,将Sprite类添加到AS3中的World

时间:2013-04-22 23:57:41

标签: actionscript-3 sprite flashdevelop addchild flvplayback

嗨(对不起,如果有语法错误,我是法国人),

我是AS3的初学者,但我知道更好的Flashpunk;无论如何,我在AS3中编码时遇到了一些困难,无法使用FlashDevelop在AS3项目中插入视频。

我找到了一些我正在寻找的代码,插入一个flv视频,在这里:http://www.flashdevelop.org/community/viewtopic.php?f=9&t=6407

但是我有一些问题要让这段代码正常工作......正如我之前所说的,我知道更好的Flashpunk所以我很难将基本的AS3与我在Flashpunk中的知识联系起来。

我试图在课堂上组织它,但我知道这些是错误的,但是,请问,有人可以告诉我如何使代码工作吗?我认为“addChild”只是一个Sprite或Movieclip函数,所以我的FLVplayback和PlayerGfx扩展了Sprite,但我不知道如何添加它们并显示它们......这是我的代码:

public class testMyWorld extends World
{
    public var player:PlayerGfx;
    public var _FLV:testFLV;

    public function testMyWorld() 
    {

        _FLV = new testFLV;
        player = new PlayerGfx();

    }

}  


public class testFLV extends Sprite
{
    public var flvPlayback:FLVPlayback;
    public var player:PlayerGfx;

    public function testFLV() 
    {
        flvPlayback = new FLVPlayback(); 
        flvPlayback.skin = "none" 
        flvPlayback.autoPlay = false;
        flvPlayback.source = "FLVSkyrim.flv"    
        player.addChild(flvPlayback);
    }

}

而且我不知道该放什么,但在链接之前有一个“玩家类”所以......

    public class PlayerGfx extends Sprite
{

    public function PlayerGfx() 
    {

    }

}

我拼命寻求帮助,我找不到任何可以解释我应该做什么的人:/我只需要在学校的AS3项目中显示视频,我不想使用FlashProfessional。 ..但是我不懂很多东西,比如addChild,显示一个Sprite Class等等......但是如果你知道其他代码更好我可以使用并且你可以向我解释,我将非常感激。

提前致谢!

编辑: gosh如果在我问这个问题时看到你的回答,我很抱歉。问题是,我在学校的一位同事给我写了一个相当不错的代码,完全回答了我需要做的事情,因为它有点棘手。我可以把它交给任何可能需要它的人,但我不确定它是否适合任何“通常”情况,因为它非常个性化并且解释了irl。无论如何,谢谢你的回答。

2 个答案:

答案 0 :(得分:0)

为什么你的基类是世界?在纯AS3项目中,它应该是一个Sprite。 然后,一旦您的播放器(FLVPlayback)被创建,您只需将其添加到显示列表中:

import fl.video.FLVPlayback;

public class Main extends Sprite
{
    private var flvPlayback:FLVPlayback;

    public function testMyWorld() 
    {    
        flvPlayback = new FLVPlayback(); 
        flvPlayback.skin = "none" 
        flvPlayback.autoPlay = false;
        flvPlayback.source = "FLVSkyrim.flv"    
        addChild(flvPlayback);    
    }

}

简单来说,你不需要所有这些课程;)

答案 1 :(得分:0)

这很棘手,因为FlashPunk会通过自定义基于位图的渲染器替换显示列表。

您的World对象不是常规显示对象,也无法保存FLVPlayback组件。

您最好的选择是将视频播放器附加到舞台上。您的主类(扩展引擎)是一个显示对象,因此它具有对舞台的引用。

首先,您需要对Main实例进行全局引用,以便找到阶段:

public class Main extends Engine
{
    static public instance:Main; // global static reference

    public function Main():void
    {
         instance = this;
         ...
    }
}

现在您可以在舞台上(通过FlashPunk舞台)附加显示对象:

public class testMyWorld extends World
{
    private var player:MyPlayer; // your FLV player class extending Sprite

    public function testMyWorld() 
    {
        player = new MyPlayer();
    }

    // when the world is shown
    override public function begin():void 
    {
         Main.instance.stage.addChild(player);
    }

    // when the world is hidden
    override public function end():void 
    {
         if (player.parent) Main.instance.stage.removeChild(player);
    }
}

PS:我实际上没有运行此代码