关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 百度网盘下载提速,推荐3种亲测有效的方法

    百度网盘下载提速,推荐3种亲测有效的方法凉透的下载工具自从PanDownload事件之后,陆续出了很多第三方的度盘不限速下载神器,但是最后都凉了,这些第三方下载神器,都是个人开发者,即便有盈利也承受不起巨大的风险。甚至有款下载神器,用爱发电!流程是这样的,1.用户提交下载链接,2.然后开发者先下载好资源(当然开发者开的是超级会员),3.最后下载完成后保存到阿里云,然后再发送给用户。当然最后还是凉凉了!比如PDown、Dupan、忆寻,最终还是都死掉了,很可惜!现在还有没有百度网盘加速下载的方法呢?这里从解决实际问题的角度上,给大家

    2022年4月28日
    57
  • 数据结构——线索化二叉树和哈夫曼树[通俗易懂]

    数据结构——线索化二叉树和哈夫曼树[通俗易懂]线索化二叉树和哈夫曼树基础知识介绍与代码分析一、基础知识介绍二、代码分析:线索二叉树(采用中序遍历)#include “pch.h”#include <iostream>using namespace std;//定义线索二叉树typedef struct Tree{ int data, LTag, RTag; //定义数据域与标记域 Tre…

    2022年8月18日
    11
  • java inputstream读取文件_java如何获取输入的数据

    java inputstream读取文件_java如何获取输入的数据InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b,int off,int len)。其中read()方法是一次读取一个字节,鬼都知道效率是非常低的。所以最好是使用后面两个方法。 /** *读取流 * *@paraminStream *@return字节数组 *@throwsExcepti

    2022年9月21日
    3
  • Cadence License激活成功教程失败解决办法

    Cadence License激活成功教程失败解决办法问题1:UnabletorestartCadenceLicenseServerwiththenewlicensefile这个问题是在运行时可能遇到的。Cadence激活成功教程license,指定license文件时,提升下列的报错:UnabletorestartCadenceLicenseServer

    2022年7月26日
    11
  • NVIC和EXTI

    NVIC和EXTINVIC:NestVectorInterruptController,嵌套中断向量控制器,是用来管理中断嵌套的,核心任务在于其优先级的管理。NVIC给每个中断赋予先占优先级(抢占优先级)和次占优先级(响应优先级)。CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分,STM

    2022年5月28日
    70
  • windows安装opencv(opencv安装不了)

    终于实现了在windows下配置Qt和opencv,从刚学opencv尝试,到现在终于配置成功,断断续续经历了一年左右,真实操碎了心。。。走了太多弯路了系统:windows10Qt:Qt5.11.1,mingw5.3版本opencv:3.2.0版本一直有用最新软件的强迫症,这次屈服了,没有使用opencv3.4.2版本,本人尝试了2.7.13版本到3.4.2版本的所有opencv,…

    2022年4月13日
    65

发表回复

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

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