2011-08-02 10 views
8

Parece haber poco apoyo o discusión en torno a Google Swiffy (http://swiffy.googlelabs.com/).¿Es posible pausar/reanudar/manipular un swiffyobject de JS?

¿Es posible pausar/reanudar/manipular efectivamente un objeto swiffyobject de JS?

Utilizando la salida estándar de Google, noté que swiffyobject se podía encontrar en la consola con algunas propiedades; notablemente frameRate. ¿Podría esta propiedad ser manipulada, por ejemplo?

Respuesta

1

Después de haber minimizado el runtime.js - fue posible lograr el comportamiento que quería.

En la línea 3312 (unminified - jsbeautifier.org)

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

Y en la línea 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 

    }  

}; 

Luego, utilizando la consola, es posible hacer una pausa/reanudar la animación usando:

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

Lo siento por mi inglés Soy francés;) Estaba buscando como Solución para poder manejar adecuadamente la animación Swiffy. Como la nueva versión (5.0) del código de google ha cambiado y ya no puedo animación de maniupler con pequeños hacks encontrados en la red ... Por contra, cifré la fuerza para encontrar una solución ... que me parece muy simple y limpia .. (sin tocar la fuente Swiffy!) de hecho, cualquier parte de este post: swiffy/javascript

se puede recuperar con FlashVars Swiffy (en AS2 y AS3 que debería funcionar también ..)

el lado JavaScript puede hacer este tipo de cosas:

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

y th e lado del flash en una enterFrame función ...:

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

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

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

y eso es todo! Para organizar los métodos que desee, pero funciona ..;) deben volver a tomar la variable indefinido si desea volver a utilizar más adelante;)

+0

Agregue una etiqueta swiffy en esto para obtener tráfico más relevante. – WEFX

6

Para la última versión Swiffy (Swiffy tiempo de ejecución versión 5.2 https://www.gstatic.com/swiffy/v5.2/runtime.js) Hice esto.

1.Utilice jsbeautifier.org como se menciona en la publicación de samb.

2.Find la función que contiene .start(). En mi caso ...

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

3.Duplicate esta función con un nombre diferente, y reemplazar inicio() con parada()

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

4.Find la declaración de la función que contiene .start(). En mi caso db.

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

5.Duplicate esta función y lo llaman lo mismo que la nueva función que ha creado con stop() en y reemplazar inicio con parada. En mi caso myNewFunction.

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

Eso es todo.

Ahora puede llamar a mi 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(); 
}); 
Cuestiones relacionadas