是否有可能暂停/恢复/操纵JS的swiffyobject?

时间:2011-08-02 10:04:59

标签: javascript html5 flash google-swiffy

关于Google Swiffy(http://swiffy.googlelabs.com/)似乎没有什么支持或讨论。

是否有可能从JS有效地暂停/恢复/操纵swiffyobject?

使用标准Google输出,我注意到swiffyobject可以在控制台中找到,但有一些属性;特别是frameRate。例如,可以操纵此属性吗?

3 个答案:

答案 0 :(得分:6)

对于最新的Swiffy版本(Swiffy运行版本5.2 https://www.gstatic.com/swiffy/v5.2/runtime.js),我这样做了。

1.如samb的帖子中所述,使用jsbeautifier.org。

2.找到包含 .start()的函数。就我而言......

db(N, function () {
    var a = this.Dg;
    this.ck(function () {
        a.start()
    })
});
db(Yj[I], Yj[I].start);

3.使用其他名称复制此函数,并将 start()替换为 stop()

myNewFunction(N, function () {
    var a = this.Dg;
    this.ck(function () {
        a.stop()
    })
});
myNewFunction(Yj[I], Yj[I].stop);

4.找到包含 .start()的函数的声明。就我而言 db

function db(a, b) {
    return a.start = b
}

5.重复此功能并将其调用为您使用 stop()创建的新功能,并将 start 替换为 stop 。在我的情况下 myNewFunction

function myNewFunction(a, b) {
    return a.stop = b
}

就是这样。

现在你可以调用我的 anim.stop();

e.g。

//create anim
var anim = {swiffy code};
var myAnim = new swiffy.Stage(document.getElementById('animContainer'), anim);
myAnim.start();

//some button click
myButton.on('click',function(){
  myAnim.stop();
});

答案 1 :(得分:5)

对不起我的英语我是法国人;) 我正在寻找能够正确处理Swiffy动画的解决方案。 由于新版本(5.0)谷歌代码已经改变,我不能再使用网络上的小黑客动画制作动画... 对于缺点,我编码强制找到一个解决方案..在我看来非常简单和干净..(没有触及源Swiffy!) 事实上,这篇文章的任何部分都是:swiffy / javascript

可以使用flashvars Swiffy恢复(在as2和as3中它也可以工作..)

方javascript可以做这样的事情:

function playMovie(){
    stage.setFlashVars('myresponse=play');
    return false;
  }
  function stopMovie(){
    stage.setFlashVars('myresponse=pause');
    return false;
  }

和函数enterFrame中的flash一侧......:

_root.onEnterFrame = function(){
switch(_level0.myresponse){
    case 'play':
        _root.play();
        break;

    case 'pause':
        _root.stop();
        break;

    default :
        break;
}
_level0.myresponse = undefined;
 }

那就是它! 你要组织你想要的方法但是..它的工作原理;) 如果您想稍后重复使用,必须重新获取未定义的变量;)

答案 2 :(得分:1)

没有缩小runtime.js - 可以实现我想要的行为。

在第3312行(未经证实 - jsbeautifier.org)

M.start = function (arg) {
this.T[Qa]();
if(arg){
this.cb.start(arg)
}else{
this.cb.start()
}
};

在第3823行:

M.start = function(arg)  {

    if(arg){
        console.log(arg);
        window.clearInterval(window.pauseAnimation)

    }else{
        window.pauseAnimation = window.setInterval(Ob(this.ne, this), 40 );
        if (!this.ie) this.ie = !0, this.ne(), window.pauseAnimation

    }     

};

然后使用控制台,可以使用以下方式暂停/恢复动画:

stage.start(true) // PAUSE the animation.
stage.start() // RESUME the animation.