【问题标题】:Use FLVplayback in FlashDevelop, add Sprite Class to a World in AS3在 FlashDevelop 中使用 FLVplayback,在 AS3 中将 Sprite Class 添加到 World
【发布时间】:2013-04-16 00:54:51
【问题描述】:

你好(如果有语法错误请见谅,我是法国人),

我是 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。不管怎样,谢谢你的回答。

【问题讨论】:

    标签: actionscript-3 sprite flashdevelop addchild flvplayback


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这很棘手,因为 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:我实际上并没有运行这段代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        相关资源
        最近更新 更多