您的位置:首页 > 移动开发 > Unity3D

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

2014-05-21 13:22 357 查看
主要就是代码了。

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();

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息