关于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();
}

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

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

(0)
上一篇 2021年11月21日 下午1:00
下一篇 2021年11月21日 下午2:00


相关推荐

  • 掉坑了!GROUP_CONCAT函数引发的线上问题

    怕什么真理无穷,进一步有近一步的欢喜本文分享一篇在工作遇到的一个问题,关于MySQL GROUP_CONCAT函数导致的问题。希望能帮忙到你。开头聊几句一年又一年,2020这一年眼看就要…

    2022年3月1日
    70
  • JS中的位置和宽度:clientWidth、offsetWidth、scrollWidth等区别「建议收藏」

    JS中的位置和宽度:clientWidth、offsetWidth、scrollWidth等区别「建议收藏」首先定义一个div。然后稍微装修一下下面开始区分一、clientWidth和clientHeigh、clientTop和clientLeft1,clientWidth的实际宽度clientWidth=width+左右padding2,clientHeigh的实际高度clien…

    2022年7月22日
    17
  • 深度搜索算法查找最短路径的方法_深度优先搜索算法

    深度搜索算法查找最短路径的方法_深度优先搜索算法如图,百度地图上有5个地点,各个地点间是单向的路径,试求出从1到5的最短路径。从图中可以得到一个5*5的二维矩阵,利用深度搜索算法,求出最短路径。从最后的运行结果,可以直观的看出搜索的过程代码实现如下:#include"pch.h"#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;vector&g…

    2025年6月6日
    5
  • 瑞芯微rk3399pro_arm主板定制开发

    瑞芯微rk3399pro_arm主板定制开发深圳市宁远电子科技有限公司于2015年在中国广东省深圳市成立,公司自成立以来一直专注于工业嵌入式产品的软硬件研发和生产,以及相应的增值服务。公司拥有强大的研发技术实力,创始团队来自于华为,三星十年工作经验以上资深研发人员。  深圳市宁远电子科技有限公司专注于工来控制产品的研发,是ARM在中国最具实力的方案公司.  公司定位于中高端产品的研发,基于RK3288,RK3399等处理器,,开发了…

    2022年10月14日
    8
  • 7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…

    7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…美国联想八通道7折好价,海淘ThinkpadX260笔记本电脑开箱简评(附齐购物到货过程)2016-06-0810:30:1896点赞288收藏127评论接上一篇购物过程贴我擦,你有完没完!!!五、转运过程(补齐剩余回国、清关、缴税、到货过程)(一)简要说明电脑到达转运仓库后,会给你绑定的电话发送一条提醒短信。本人在5月12日收到短信通知,本想给大家找找短信,都怪我手太贱已删除,哎。…

    2022年5月24日
    38
  • SpringBoot 项目中使用Log4j2详细(避坑)

    SpringBoot 项目中使用Log4j2详细(避坑)以下大部分内容转载整理自 https blog csdn net vbirdbest article details 感谢 vbirdbest 的相关知识分享首先 认识一下三胞胎 log4j 是 apache 实现的一个开源日志组件 logback 同样是由 log4j 的作者设计完成的 拥有更好的特性 用来取代 log4j 的一个日志框架 是 slf4j 的原生实现 Log4j2 是

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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