关于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();
}
}
关于unity3d播放flash动画,使用插件uniswf的更多相关文章
- (转)在Unity3D中控制动画播放
用Unity3D也算是好久了,但是每次做项目总还是能学到新的东西.这次做一个TPS的项目就遇到了这样一个问题,如何同时在上下半身播放不同的动画?解决方法其实是很简单,但由于对于动画资源的了解不足导致问 ...
- unity3d的Animation 动画播放器的基本API
直接上代码: //动画名称 private const string ANIM_NAME = "Take 001"; //模型对象 private GameObject obj = ...
- Flash动画
Flash (交互式矢量图和Web动画标准) Flash是由macromedia公司推出的交互式矢量图和 Web 动画的标准,由Adobe公 司收购.做Flash动画的人被称之为闪客.网页设计者使用 ...
- HTML5骨骼动画Demo | 使用min2d、createjs、pixi播放spine动画
Spine做骨骼动画是比较流行的,使用起来可能相对复杂,但功能毕竟强大,所以市场占有率较大. 在unity.cocos2d.starling中使用spine已经很成熟了,而HTML5这一块可能刚刚起步 ...
- 转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...
- 网页中插入Flash动画(.swf)代码和常用参数设置
我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...
- Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系
2条评论 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator ...
- Unity3D之Legacy动画系统学习笔记
Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...
- Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用
动作游戏 还记得读书的时候熬夜打<波斯王子>的时光,我们的王子通过跳跃穿过墙壁的小洞.在高层建筑上进行攀爬和跳跃,还有在操作失误掉下高楼和触发必死机关后使用时之沙的时光倒流功能回归死亡之前 ...
随机推荐
- Missing artifact com.sun:tools:jar:1.5.0的解决方案
今天在用maven的时候遇到一个问题pom.xml提示Missing artifact com.sun:tools:jar:1.5.0 试过改eclipse的eclipse.ini文件,也试过在ecl ...
- jquery-autocomplete 参数说明
minChars (Number): 在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表 * width (Num ...
- Gradle使用手册(三):构建任务
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...
- 在cshtml页面中,以‘@’开始的表达式 表示C#语句,会被编译执行
在原始的Index.html中是正常显示的,然而在现在这个源代码是个cshtml页面: 但是在cshtml页面中,以‘@’开始的表达式 表示C#语句,会被编译执行,会去寻找controller传度给@ ...
- Oracle ORA-00119和ORA-00132的解决方案
今天在启动服务器上的ORACLE时遇到如下错误: SQL> startup; ORA-00119: invalid specification for system parameter LOCA ...
- POJ 3208-Apocalypse Someday(数位dp)
题意:给定n,输出第n大包含666的数字. 分析:dp[i][j][k][l]表示 长度为i,当前位是否是6,前一位是否6,是否已经包含666,表示的数量,再用二分找出第n大的这样的数字. #incl ...
- HDU 5696 区间的价值 暴力
分析:枚举以该点为最小值,然后找到最大值,更新,相应数组,至此,把区间分割(因为包含这个最小值点已经枚举过) 然后理解理解,感觉好像挺对的...因为后面(即dfs区间变小时)如果再包含最小值节点,也不 ...
- HDU 5618 Jam's problem again CDQ分治 BC ROUND 70
题意:给你1e5个点(x,y,z),对于每一个点询问有多少个点(x1,y1,z1)满足x1<=x&&y1<=y&&z1<=z 分析:(官方题解奉上)很 ...
- 通过chrome识别手机端app元素--Chrome:inspector
现实中应该有这样一种情况,就是一个app只支持手机端使用,同时他又是hybrid的,那么其中的webview部分的元素属性如何去获得呢? 使用下面的方法可以解决这个问题: 调试 Android Chr ...
- jQuery中实现自定义方法的扩展
JQuery包装器提供了大量的方法,可以再页面中直接使用.但是,没有 任何一个库可以满足所有的需求,所以,JQuery库提供了丰富的扩展功能 .以禁用一组表单元素为例,看看怎么简单有效的在JQuery ...