2011-08-02 9 views
8

Wygląda na to, że nie ma zbyt wiele wsparcia ani dyskusji dotyczących Google Swiffy (http://swiffy.googlelabs.com/).Czy można wstrzymać/wznowić/zmodyfikować obiekt SWF z JS?

Czy można skutecznie wstrzymywać/wznawiać/manipulować obiektem swiffy z JS?

Używając standardowego wyjścia Google, zauważyłem, że obiekt swiffy można znaleźć w konsoli z kilkoma właściwościami; w szczególności frameRate. Czy można na przykład manipulować tą własnością?

Odpowiedz

1

Po nieminified plik runtime.js - możliwe było osiągnięcie pożądanego zachowania.

W linii 3312 (unminified - jsbeautifier.org)

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

A on line 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 

    }  

}; 

Następnie za pomocą konsoli, możliwe jest, aby wstrzymać/wznowić swoją animację używając:

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

Przepraszam za mój angielski Jestem francuski;) Szukałem jak olution, aby móc poprawnie obsługiwać animację Swiffy. Od czasu nowej wersji (5.0) kod google zmienił się i nie mogę już zarządzać animacją z małymi włamaniami znalezionymi w sieci ... Za minusy zakodowałem życie, aby znaleźć rozwiązanie .. co wydaje mi się bardzo proste i czyste .. (bez dotykania źródła Swiffy!) w zasadzie wszystkie części tego postu: swiffy/javascript

można odzyskać z flashvars Swiffy (w AS2 i AS3 powinno działać zbyt ..)

boku JavaScript może wykonaj następujące czynności:

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

th Po stronie lampy błyskowej w funkcji enterFrame ...:

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

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

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

i gotowe! Wam zorganizować metody chcesz, ale .. to działa;) Musi odzyskać zmienną niezdefiniowany, jeśli chcesz go używać ponownie później;)

+0

Dodaj do tego znacznik swifty, aby uzyskać trafniejszy ruch. – WEFX

6

Dla najnowszej wersji Swiffy (Swiffy wykonania wersji 5.2 https://www.gstatic.com/swiffy/v5.2/runtime.js) Zrobiłem to.

1. Korzystaj z jsbeautifier.org, jak wspomniano w poście Samba.

2. Znajdź funkcję zawierającą .start(). W moim przypadku ...

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

3.Duplicate tej funkcji z inną nazwą, a zastąpić start() z stop()

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

4.Find deklaracji funkcja zawierająca .start(). W moim przypadku db.

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

5.Duplicate ta funkcja i nazwać tak samo jak utworzonego z stop() w nowej funkcji i zastąpić rozpoczęcia z przystanku. W moim przypadku myNewFunction.

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

To wszystko.

Teraz możesz zadzwonić do mojego anim.stop();

np.

//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(); 
}); 
Powiązane problemy