关于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)


相关推荐

  • java中字符串分割特殊字符处理_java字符串按照特定字符分割

    java中字符串分割特殊字符处理_java字符串按照特定字符分割String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊字符作为分割标志的时候,不使用特殊手段就会抛出java.util.regex.PatternSyntaxException异常,比如用java中的运算符号,括号等等这个时候可以使用split(“[*]”)split(“//+”)来…

  • Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序总结

    Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序总结1.增加一个字段 代码如下 复制代码 //增加一个字段,默认为空altertableuseraddCOLUMNnew1VARCHAR(20)DEFAULTNULL; //增加一个字段,默认不能为空altertableuseraddCOLUMNnew2VARCHAR(20)NOTNULL; 2….

  • VS2010过期密钥「建议收藏」

    VS2010过期密钥「建议收藏」VS2010 旗舰版可用Key:YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

  • charles导致mac无法上网_mac可以ping通 但是浏览器上不了网

    charles导致mac无法上网_mac可以ping通 但是浏览器上不了网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

  • 长尾分布数据_厚尾分布

    长尾分布数据_厚尾分布长尾分布数据11.什么是长尾分布数据长尾分布数据是一种偏态分布,是指几个类别(亦叫头类)包含大量的样本,而大多数类别(亦叫尾类)只有非常少量的样本。类似这样的数据集会使得深度学习网络在头部类中表现良好,在尾部类中效率不高,整体的识别精度显著下降。2.解决办法大多数研究者通过不平衡学习策略来解决长尾识别问题,主要分为两类:数据级方法和算法级方法。数据级方法数据水平的策略包括尾部类过采样,头部类欠采样,以及其他新的抽样方法。所以解决手段主要着力于如何对数据进行抽样。这种方法存在的问题是,过采

    2022年10月23日
  • 二叉树进行中序遍历的结果_层次遍历和中序遍历构建二叉树

    二叉树进行中序遍历的结果_层次遍历和中序遍历构建二叉树目录1.二叉树1.中序遍历1.二叉树1.中序遍历不论是二叉树、二叉排序树(搜索树),遍历是基础。至于什么是中序遍历,中规中矩的理论,可以参考这篇文章,二叉树中序遍历(递归+非递归)Java.,其中详细介绍了中序遍历实现的方法和结果,包括递归和非递归两种方式。…

发表回复

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

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