Citat:
Ursprungligen postat av
DigiFlax
Tänker att du har en delad flagga som är satt till True när en animation pågår. Får du in en ny animation när den flaggan är satt till True så lägger du den nya animationen i en kö. När du då är klar med en animation så måste du kolla kön och starta en ny animation om det finns något där. Alltså, om du får in en ny animation när det redan pågår en annan så kölägger du den nya animationen och litar på att den pågående animationen invoke:ar den nya animationen när den pågående animationen körts klart.
Tänkte först att du kunde köra typ ett spin lock och på så sätt få en automatisk kö. Men eftersom javascript bara går på en tråd så får du nog implementera en egen kö.
Jag är inte så bra på JS så jag vet inte riktigt hur jag ska implementera detta. Men jag håller med dig, och har varit inne på att skapa en kö, vilket är det mest logiska då jag aldrig vet när det kommer events, hur många dom är osv.
Kan visa vad jag skrivit kodmässigt (inte så snyggt) så kanske jag kan få tips om hur jag borde göra? Jag vill gärna lära mig så det är ok med inriktning. Har tidigare googlat på köhantering i JS men bara blivit vimsig av det
Jag har försökt loopa igenom elementen i koden nedan, men det fungerade inte..
Kod:
<div id="bar"> </div> <img id="logo" src="">
<h4 id="ticker">(placeholer)<br/>(placeholer)<br/> Säsong (placeholer) Avsnitt (placeholer)</h4>
<script src="http://autobahn.s3.amazonaws.com/js/autobahn.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
<!-- <script src="animate.js"></script> -->
<script>
var conn = new ab.Session('ws://control.nebuchadnezzar.local:8080',
function() {
conn.subscribe('NextShow', function(topic, data) {
console.log(data);
for(key in data.Program){
ticker.innerText = data.Program[key];
TweenMax.to("#bar", 2, {left:1450,ease:Back.easeOut});
TweenMax.to("#ticker", 2, {left:1560,ease:Back.easeOut, delay:0.5});
TweenMax.to("#logo", 2, {left:1450,ease:Back.easeOut, delay:0.5});
TweenMax.to("#ticker", 2, {left:1920,ease:Power2.easeOut, delay:10});
TweenMax.to("#logo", 2, {left:1920,ease:Power2.easeOut, delay:10});
TweenMax.to("#bar", 2, {left:1920,ease:Power2.easeOut, delay:10});
TweenMax.to("#logo", 2, {opacity:0, delay:11});
TweenMax.to("#ticker", 2, {opacity:0, delay:11});
TweenMax.to("#bar", 2, {opacity:0, delay:11});
console.log(ProgramEPG);
setTimeout(function(){
location.reload();
},1000*30);
}
});
},
function() {
console.warn('WebSocket connection closed');
location.reload(); // Ok rätt ful kod för att initiera ny connection
},
{'skipSubprotocolCheck': true, 'maxRetries': 60, 'retryDelay': 500}
);
// A $( document ).ready() block.
$( document ).ready(function() {
console.log( "ready!" );
});