关于unity3d播放flash动画,使用插件uniswf

关于unity3d播放flash动画,使用插件uniswf

主要就是代码了。

1.using UnityEngine;
using System.Collections;
using pumpkin.swf;
using System.Collections.Generic;
using pumpkin.events;
using pumpkin.display;

public class MovieClipX : MovieClip
{

    public delegate void FrameCallback();
    public Dictionary<int, FrameCallback> FrameEvents = null;

        public MovieClipX(SwfURI uri) : base(uri)
        {
            
        }

        public MovieClipX(string linkage)
            : base(linkage)
        {
            
        }
   
    public bool  addFrameScript(string label, FrameCallback onFrameCallback)
    {
        if (string.IsNullOrEmpty(label))
            return false;

        
         int index = this.getFrameLabel(label);
       //  Debug.Log(“index ” + getCurrentFrame());
         if (index <= 0)
             return false;

         if (FrameEvents == null)
         {
             FrameEvents = new Dictionary<int, FrameCallback>();
         }

         if (!FrameEvents.ContainsKey(index))
         {
             FrameEvents.Add(index, onFrameCallback);
         }
         else
         {
             FrameEvents.Remove(index);
             if (onFrameCallback != null)
             {
                 FrameEvents.Add(index, onFrameCallback);
             }  
         }

         return true;
       
    }

    public bool addFrameScript(int frame, FrameCallback onFrameCallback)
    {
       
       
       
        if (FrameEvents == null)
        {
            FrameEvents = new Dictionary<int, FrameCallback>();
        }

        if (!FrameEvents.ContainsKey(frame))
        {
            FrameEvents.Add(frame, onFrameCallback);
        }
        else
        {
            FrameEvents.Remove(frame);
            if (onFrameCallback != null)
            {
                FrameEvents.Add(frame, onFrameCallback);
            }
        }

        return true;

    }

    public bool  setEndScript(FrameCallback onFrameCallback)
    {
        int index = this.getTotalFrames();
        if (index <= 0)
         return false;
        
        return addFrameScript(index,   onFrameCallback);

    }

    public override void updateFrame(CEvent e)
    {
       
        if (FrameEvents != null)
        {
            int index = this.getCurrentFrame();
            if (FrameEvents.ContainsKey(index))
            {
                FrameCallback b = FrameEvents[index];
                if (b != null)
                {
                    b();
                }
            }
        }
      
        base.updateFrame(e);
    }
}

2.using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using pumpkin.display;
using pumpkin.text;
using pumpkin.events;
using pumpkin.logging;
using pumpkin.tweener;

public class FlashUI : MovieClipOverlayCameraBehaviour {
public GameObject back;
protected MovieClipX movie = null;
public delegate void  OnStop();
void Start () {
stage.stageWidth = (float)Screen.width/1136f;
stage.stageHeight = (float)Screen.height/640f;
}
public void OnPlayToEnd(string path,Vector2 pos,OnStop stop = null)
{
MovieClipX overlay = new MovieClipX(path);
stage.addChild(overlay);
//位置
overlay.x = pos.x*stage.stageWidth;
overlay.y = pos.y*stage.stageHeight;
overlay.scaleX = stage.stageWidth;
overlay.scaleY = stage.stageHeight;
overlay.addFrameScript(“end”,delegate(){
stage.removeChild(overlay);
if(stop != null)stop();
});
overlay.gotoAndPlay(0);
}
public void OnPlayToFrame(string path,Vector2 pos,int endFrame,OnStop stop = null)
{
MovieClipX overlay = new MovieClipX(path);
stage.addChild(overlay);
//位置
overlay.x = pos.x*stage.stageWidth;
overlay.y = pos.y*stage.stageHeight;
overlay.scaleX = stage.stageWidth;
overlay.scaleY = stage.stageHeight;
overlay.addFrameScript(endFrame,delegate(){
stage.removeChild(overlay);
if(stop != null)stop();
});
overlay.gotoAndPlay(0);
}
public MovieClipX OnPlayNoEnd(string path,Vector2 pos)
{
MovieClipX overlay = new MovieClipX(path);
stage.addChild(overlay);
//位置
overlay.x = pos.x*stage.stageWidth;
overlay.y = pos.y*stage.stageHeight;
overlay.scaleX = stage.stageWidth;
overlay.scaleY = stage.stageHeight;
overlay.gotoAndPlay(0);
return overlay;
}
public void ClearFlash()
{
stage.clearChild();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119057.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 实对称矩阵_对称矩阵怎么快速求行列式

    实对称矩阵_对称矩阵怎么快速求行列式实对称矩阵有着很好的性质,如果用一句话概括,就是:n阶实对称矩阵必有n个两两正交的实特征向量。百度百科对实对称矩阵的性质描述如下:1.实对称矩阵A的不同特征值对应的特征向量是正交的。2.实对称

  • Python中的取整、取余运算「建议收藏」

    Python中的取整、取余运算「建议收藏」1.取整运算在Python中取整运算的运算符为//,且取整运算的取整为向下取整,不进行四舍五入例:9//4=2,即9对4取整等于2-9//-4=2,因为-9÷-4=2.25,取整为2那么问题来了,9//-4等于多少呢?9//-4=-3,因为9÷-4应该等于-2.25,那么对-2.25向下取整,应该为-3,而不是-2,所以9//-4=-3那么-9//4呢?-9÷4也应该等于-2.25,所以向下取整,得到-9//4=-3总结:9//4=2-9//-4=29//-4=-3-9//4=-3

  • oracle添加not null约束

    oracle添加not null约束在创建表时,为列添加notnull约束,形式如下:column_namedata_type[constraintconstraint_name]notnull其中,constraintconstraint_name表示为约束指定名称。也可以为已创建的表中添加notnull约束,这时就需要使用altertable…modify语句,形式如下:altert

  • 生成mysql亿级压测数据程序

    生成mysql亿级压测数据程序

  • 全新企业发卡系统源码/带有代理功能发卡平台源码[通俗易懂]

    全新企业发卡系统源码/带有代理功能发卡平台源码[通俗易懂]☑️编号:ym286☑️品牌:无☑️语言:PHP☑️大小:105MB☑️类型:企业发卡系统☑️支持:pc+wap????欢迎免费领取(注明编号)????✨源码介绍全新企业发卡系统源码,带有代理功能的发卡平台源码,目前应该算是最完美的一款了,亲测可运营。并且多套模板可以切换,有需要的自取吧。更新说明:支付界面短链接二维码后台模板等修复及一些细节优化pc用户端后台稍微美化(颜色调整)安卓用户端后台界面UI美化重写,商户头像根据QQ获取Admin后台登录页面重写(

  • uwsgi模式_uwsgi配置详解[通俗易懂]

    uwsgi模式_uwsgi配置详解[通俗易懂]#先激活virtualenv#启动:uwsgiuwsgi.ini#停止:uwsgi–stopuwsgi.pid[uwsgi]#对外提供http服务的端口http=:8000#thelocalunixsocketfilethancommnuincatetoNginx用于和nginx进行数据交互的端口socket=127.0.0.1:8001#the…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号