首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于unity3d播放flash动画,使用插件uniswf

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

作者头像
全栈程序员站长
发布2022-07-09 12:32:13
发布2022-07-09 12:32:13
1.4K0
举报

主要就是代码了。

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.cn/119057.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档