login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Canvas achtergrond dmv scrollen (Opgelost)

Offline GroundZero - 23/12/2015 13:32 (laatste wijziging 23/12/2015 14:29)
Avatar van GroundZeroLid Beste,

ik heb een canvas welke ik geanimeerd heb (uit eindelijk een parallax effect) door de achtergrond te veranderen (om alles te testen)... echter loopt het niet helemaal lekker... dit komt denk ik omdat er elke keer een ander plaatje geladen word... jullie enig idee hoe je iets als dit kunt optimaliseren?

voorbeeld: http://animation.devbizz.nl/

code:

  1. $(document).ready(function(e) {
  2. $.preloadImages = function() {
  3. for (var i = 0; i < arguments.length; i++) {
  4. $("<img />").attr("src", arguments[i]);
  5. }
  6. }
  7.  
  8. $.preloadImages(
  9. <?php
  10. for($i = 1; $i <= 90; $i++) {
  11.  
  12. if($i <= 9){
  13. $name = 'watch000'.$i;
  14. }elseif($nr >= 10 && $i <= 99) {
  15. $name = 'watch00'.$i;
  16. } else {
  17. $name = 'watch0'.$i;
  18. }
  19.  
  20. if($i == 90) {
  21. echo '"'.$name.'.png"';
  22. } else {
  23. echo '"'.$name.'.png",';
  24. }
  25. }
  26. ?>
  27. );
  28. });
  29.  
  30. $(document).scroll(function(){
  31. // get scrolled position
  32. var scrolled = $(document).scrollTop();
  33. $('#position').html( Math.round(scrolled * 0.02) );
  34.  
  35. // get the correct name
  36. var nr = Math.round(scrolled * 0.02);
  37.  
  38. if(nr <= 9){
  39. var name = 'watch000' + nr;
  40. }else if(nr >= 10 && nr <= 99) {
  41. var name = 'watch00' + nr;
  42. } else {
  43. var name = 'watch0' + nr;
  44. }
  45.  
  46. if(nr >= 71) {
  47. $('.kiekeboo').fadeIn(2000)
  48. $('.background').slideDown(2000);
  49. } else {
  50. $('.kiekeboo').fadeOut(2000);
  51. $('.background').slideUp(2000);
  52. }
  53.  
  54. // update canvas background accordingly to the
  55. // numbers of frames we scrolled
  56. $('.canvas').css('background-image', 'url(' + name + '.png)');
  57. });


P.S. staat niet meer in een canvas haha 
Ik heb een "pre-load images" script toegevoegd dat zou moeten werken alleen zie ik totaal geen verschil om eerlijk te zijn.

Probleem nu is dat als je te snel scrolt dat je ziet dat hij moet "laden"... de overgang is gewoon niet mooi (snel genoeg?)

2 antwoorden

Gesponsorde links
Offline Thomas - 23/12/2015 16:07
Avatar van Thomas Moderator Heb je al gekeken naar je netwerktab in je developer console? Zelfs al is je afbeelding gecached gaat er nog steeds een GET request uit om te controleren of de afbeelding is gewijzigd en dat kost tijd.

Al gegoogled op "css get background image from cache"? In de eerste hit staat al interessante informatie. Mogelijk kun je de headers tweaken van de request/responses. Of je zult echt via JavaScript moeten refereren aan je gecachede afbeeldingen zodat de animatie vervolgens volledig clientside verloopt (dus via een andere weg dan .css('background-image', '...')).

Ook het niet geaccepteerde antwoord biedt een aantal alternatieven zoals sprites (geanimeerde gif? lol). Ook zou je kunnen denken aan vector scale graphics.

Daarnaast de observatie dat het renderen van pagina grote achtergrondafbeeldingen in eerste instantie waarschijnlijk niet bedoeld (laat staan geoptimaliseerd) zijn voor animatie. Ik zou dan al snel aan een andere techniek denken zoals Flash of sprites (of iig een geanimeerd ding uit één geheel en niet allerlei afzonderlijke afbeeldingen) of vector graphics.

Maar misschien kom je enkel met JavaScript manipulatie (zij het op een andere manier) al een heel eind.
Bedankt door: GroundZero
Offline GroundZero - 24/12/2015 07:49
Avatar van GroundZero Lid Thanks voor je antwoord, word even verdiepen in javascript dus hahaha... ken er weinig tot niks van maar ik zal eens onderzoeken.

Idee kwam oorspronkelijk van Sony af, hun gebruiken ca. 1300 images voor hun parallax website, maar dat zal indd. met een flink stuk javascript opgebouwd zijn ;)

http://www.sony.com/be-moved/
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s