- 主题:[求助]关于gif图片的播放及一些引申问题
半路出家,自己摸索,知识不成系统,有些可能非常简单的问题也处理得磕磕绊绊的,求指教。
基本问题:
比如我在页面上放了一个只播放一次的gif,然后需要根据事件触发重新播放的功能。目前知道的重新播放的方法(没有使用gif控制器等第三方的东东),是直接在js里用Img对象的.src="xxx.gif"这种方式。出现的问题是:当gif加载过于频繁或者过多时,偶尔会有播放不成功的情况,大概与机器本身的性能有关。
这一问题怎么解决呢?
如果用gif预加载的方法,似乎是没办法重新播放的;
之前考虑过不用gif,直接在js里切换序列帧,但是一秒切24次是不现实的;
不能用swf或者其它格式,因为需要透明背景。
这个问题有什么解决方案吗?
进一步的问题:
canves动画的性能如何,一秒绘制24帧,可行吗?
是不是要考虑在js中用线程来处理?
另外我这个思路是不是方向本身就不对,不应该这么做?
求指教!
--
FROM 140.207.146.*
谢谢指点,不过不是这个逻辑。
我要实现的功能类似于游戏:
点击一个按钮,就发射一发子弹。子弹打到另一边的人,另一边的人倒下。
发射是一个gif,人倒下是另一个gif。子弹飞行时间固定,点击按钮先播放第一个gif,用setTimeout方式来播放第二个gif。
所以不能用这种方式处理的。
我一直在想,是不是用gif这个思路本身就是有问题的。
【 在 zzjyingzi 的大作中提到: 】
: 图像加载完毕再显示啊,给图像个onload
--
FROM 140.207.146.*
flash不支持透明吧?
是不是要做成像以前很火的那种flash小游戏的方式?
canvas这个,我看到的动画方法都是把原来的用白矩形覆盖再重画一张图上去的形式。这种方法效率如何呢?图片数量多的话,能达到1秒24帧的程度吗?
【 在 shaolin 的大作中提到: 】
: canvas吧还是。。
: 如果再复杂了,flash吧。
--
FROM 183.131.116.*
谢谢指点。
实际上比这复杂,如果只是设置div的left属性是可行的,但是总体要求是这样的:
左边一个人开枪,子弹飞行中有各种特效,右边人中枪倒地。
要求就是按照顺序实现这三个动作。
没办法做成一个gif的原因是:两个人的位置不定且不同步,需要通过div控制移动,子弹也得跟着动。
手上的资源,是三套序列帧:左边人开枪,子弹飞,右边人倒地。
目前实现的方式就是三个gif,设定时间差,第一个gif开始播放后的固定时间(setTimeout)播放第二个和第三个。
但是多次播放时,会有点问题,可能动画播放不全。
要求不是很严格,大概意思就可以,所以才会用这么奇怪的方式来实现。
假如抛开gif这种方式,有什么办法可以实现吗?
用setTimeout在canves上绘帧应该会有同样的问题,就是切换速度太快,导致页面其它影响不正常吧,要多开一个线程画动画?
【 在 aotian 的大作中提到: 】
: 不用gif
: 子弹发射用一个层的背景,改变层位置
: 倒下想办法用css的变形和动画
: ...................
--
FROM 140.207.146.*