Можно ли приостановить / возобновить / манипулировать swiffyobject из JS? - PullRequest
8 голосов
/ 02 августа 2011

Похоже, что Google Swiffy почти не поддерживает и не обсуждает (http://swiffy.googlelabs.com/).

Можно ли эффективно приостановить / возобновить / манипулировать swiffyobject из JS?

Используя стандартный вывод Google, я заметил, что swiffyobject можно найти в консоли с несколькими свойствами; особенно frameRate. Можно ли, например, манипулировать этим свойством?

Ответы [ 3 ]

6 голосов
/ 13 июня 2013

Для последней версии Swiffy (среда выполнения Swiffy 5.2 https://www.gstatic.com/swiffy/v5.2/runtime.js) Я сделал это.

1.Используйте 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 () . В моем случае дБ .

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

5.Дублируйте эту функцию и вызовите ее так же, как новую функцию, созданную с помощью stop () in, и замените start на stop . В моем случае myNewFunction .

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

Вот и все.

Теперь вы можете позвонить моему anim.stop ();

* * 1 042, например,
//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();
});
5 голосов
/ 22 декабря 2012

Извините за мой английский, я француз;) Я искал решение, чтобы иметь возможность правильно обрабатывать анимацию Swiffy.Поскольку в новой версии (5.0) код Google изменился, и я больше не могу манипулировать анимацией с небольшими взломами, найденными в сети ... Для минусов я закодировал силу, чтобы найти решение .. которое мне кажется очень простым и чистым ..(не касаясь источника 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 ...:

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

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

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

и все!Вам нужно организовать методы, которые вы хотите, но .. это работает;) Необходимо повторно использовать неопределенную переменную, если вы хотите использовать ее позже;)

1 голос
/ 03 августа 2011

Не минимизировав runtime.js - можно было добиться желаемого поведения.

On line 3312 (unminified - 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.
...