zoukankan      html  css  js  c++  java
  • 关于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();
    }


  • 相关阅读:
    LeetCode 【1】 Two Sum --001
    计算机网络-自定向下方法之应用层
    Android TextView自动换行、排列错乱问题及解决
    Android ScrollView内部组件设置android:layout_height="fill_parent"无效的解决办法
    Gson解析空字符串异常的处理
    AndroBench手机性能测试
    使用adb命令通过IP地址连接手机
    Android string.xml 添加特殊字符
    Android string资源 包含 数学符号等特殊字符 及 参数占位符
    Android Studio多渠道打包(二)
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3836579.html
Copyright © 2011-2022 走看看