0

嗨(如果有语法错误,请原谅,我是法国人),

我是 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等等……但是如果你知道我可以使用的更好的其他代码并且你可以向我解释,我将非常感激。

提前致谢 !

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

4

2 回答 2

0

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

您的 World 对象不是常规显示对象,它不能包含 FLVPlayback 组件。

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

首先,您需要对 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:我实际上并没有运行此代码

于 2013-04-24T14:24:56.767 回答
0

为什么你的基类是 World?在纯 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);    
    }

}

简单点,你不需要所有这些类;)

于 2013-04-24T09:14:14.497 回答