Posts tonen met het label Voortgang. Alle posts tonen
Posts tonen met het label Voortgang. Alle posts tonen

vrijdag 4 november 2016

voortgang week 8 & 9 + demo

De laatste stap is het afmaken van de demo. Hierbij heb verschillende nieuwe dingen geleerd.

Aanpak
Ik wilde verschillende kleine aanpassingen doen aan mijn demo. Ik heb verschillende sites bezocht om te kijken hoe ik bepaalde dingen kon doen. Vervolgend heb ik dit toegepast in mijn eigen code.

Leerervaring

- Achtergrond toevoegen in CSS
Een makkelijke manier om elke pagina een ander achtergrond te geven is met de volgende code:

background-image: url(images/naam.jpg);

Hiervoor moet je je 'images' mapje wel in je CSS mapje zetten.
Je kunt de achtergrond de hele pagina laten vullen met de code:

background-size: 100% 100%;

- Een timeline oneindig herhalen
Je kunt met 'repeat: -1' een timeline oneindig laten herhalen.
Bijvoorbeeld: tlleafys.staggerTo(".leafy", 20, {y: '1200', repeat: -1}, 0.7) om de blaadjes altijd te laten vallen

- Elementen boven de pagina positioneren
De vallende blaadjes moeten boven de pagina verschijnen en dan naar benden vallen. Dit kan door in CSS '-        top: -1200' toe te voegen. 

- Timeline afspelen bij hover
Je bepaald eest elke element je de hover wilt. Vervolgens zet je daar een functie op. In de functie zet je play en repeat zodat de timeline gaat afspelen wanneer je met je muis over het element gaat. 

var $oor = $('#rear4');
$oor.hover(
  function(){
    tldeer.play();
    tldeer.restart({paused: true})
 })

- custom cursor maken
Ik wilde een vliegje maken van mijn cursor. Dit kan door de volgende code:

.cursorfun {
   cursor: url('images/fly.png'), auto ;
}

Een probleem hierbij was echter dat de de achtergrond niet als element in de class stond. Daardoor veranderde de cursor alleen in een vlieg wanneer je over de tekst of de afbeelding ging. Daarom heb ik een onzichtbare achtergrond toegevoegd in de class.

Resultaat


Hier is de uiteindelijk versie van de demo te zien.






Bronnen





maandag 24 oktober 2016

Voortgang week 7




Hoe zorg ik dat de interactieve animaties weer naar het begin gaan wanneer je de pagina opnieuw bezoekt? 

Aanpak
Ik heb opnieuw de mogelijkheden van 'reverse' en 'restart' bekeken. Vervolgens heb ik hier (*klik*) een aantal voorbeelden uitgeprobeerd. Tenslotte heb ik het toegepast in mijn eigen code.  

Leerervaring
Je kunt een reverse toevoegen aan een clickfunctie. Je kunt meerdere reverses in één functie zetten waardoor alle animaties teruggezet worden. 

Resultaat
Ik heb ervoor gezorgd dat wanneer je op de homebutton klikt alle animaties teruggespeeld worden naar het begin. http://codepen.io/codesen/pen/VKQodZ?editors=1010 

Verschillende toepassingen verzinnen voor de technieken

Nu ik beter de mogelijkheden van GreenSock ken kan ik ook beter bedenken wat voor toepassingen je zou kunnen maken met deze techniek. 

Aanpak
Ik heb gebrainstormd en op een vel alle ideeën die ik bedacht opgeschreven. Voor elk idee heb ik nog meerdere mogelijkheden bedacht.

Hieronder staan de beste ideeën op een rijtje:

  • Geanimeerde logo's voor op een webpagina 
  • Interactieve banner
    • Om aandacht te trekken
    • Als advertentie
  • Paralax-website
  • Interactieve animaties op het web
    • Advertenties
    • Spelletjes
      • Mogelijk in combinatie met Phaser
    • digitaal prentenboekje
      • Als website/link
      • Als toevoeging aan een papieren prentenboek, dmv QR-codes
    • Interactieve wenskaart
      • Om te mailen naar vrienden/familie/klanten ect
      • Als toevoegen van een fisieke wenskaart, dmv van QR-codes
      • Gepersonaliseerd per persoon/bedrijf
  • Datavisualisatie
    • Interactieve grafieken
    • Geanimeerde tabellen ect
    • Mogelijk in combinatie met d3.js
  • Muziek maken
    • Knoppen die geluid maken
    • Interactief instrument 

Hoe kan ik ervoor zorgen dat onzichtbare elementen niet voor andere klikbare elementen zitten? 

Aanpak
Mogelijkheden van 'display' opzoeken. 
Dit toepassen op eigen code.

Leerervaring
Met ‘display: hidden’ is het element onzichtbaar maar zit het nog wel voor andere elementen
Met ‘display: none’ is het hele element weg. Om het element weer zichtbaar te maken als je erop klikt (of andersom) gebruik je ‘display: block’

Voor de cirkel: de onzichtbare tekst zit nu niet meer voor het rondje zodat je erop kunt klikken. Maar ik wilde ook dat als je op de tekst klikt het rondje weer terug veranderd. Daarom maakte ik ook een klikfunctie aan voor de tekst en gaf ik deze een ‘cursor: pointer’

Bij de blaadjes van de egel heb ik in de CSS de id’s een display: block gegeven. In de tween veranderd dit naar ‘display: ‘none’’. Het nadeel hiervan is dat je geen overgang hebt van zichtbaar naar onzichtbaar. Daarom heb ik eerst een variabele en timeline aangemaakt en daaraan een tween toegevoegd waarin de opacity 0 wordt en daarna de ‘display: none’.

Bedenken en uitwerken hoe ik de kennis die ik tijdens dit project het opgedaan kan delen via een video

Ik heb alle opgedane kennis van de afgelopen weken bij elkaar gezet. Ik heb gekeken naar welke punten belangrijk zijn om te benoemen in de video. Ook heb ik alvast nagedacht over hoe ik de video zo duidelijk mogelijk kan maken. 
Alles wat ik tot nu toe heb opgeschreven is te vinden in dit document: https://we.tl/8A5VivBtsb 


Bronnen:

maandag 10 oktober 2016

Retrospective - week 6


Wat ging goed

Deze week heb ik met veel plezier aan het project gewerkt. Ik had veel motivatie omdat ik echt iets heb gemaakt waar ik blij mee ben. Door dingen samen te voegen heb ik wat leuks gemaakt zoals de bespeelbare piano en het de interactieve illustraties in de slides. Hierdoor bleef ik gemotiveerd en hierdoor wordt ik steeds beter in de technieken die ik al kende.
Het is gelukt om de slides met GSAP te maken en hierin verschillende technieken toe te passen. Hier was ik 9 uur mee bezig. Het toevoegen van audio koste minder tijd dan ik had verwacht, maar 1,5 uur ipv van 2 uur. De interactieve inhoudsopgave is ook gelukt in minder tijd dan ik had ingeschat. 

Wat kon beter

Afgelopen week heb ik me erg veel gericht op details. Ik wilde graag dat de piano er goed uitzag en dat bijvoorbeeld de toetsen oplichtte wanneer je erop klikte. Ook wilde ik graag leuke interactieve of bewegende afbeeldingen in mijn slides. Het goede hiervan is dat ik hierdoor erg gemotiveerd was om aan het project te werken. Aan de andere kant had ik deze tijd ook kunnen steken in een nieuwe ontwikkelingsstap wat voor het behalen van het project waarschijnlijk verstandiger was geweest.

Wat moet beter

Ik heb er weer voor gezorgd dat ik alle blogartikelen op één dag moet schrijven. Ik kwam erachter dat dit erg veel tijd kost en concentratie kost. Omdat ik vaak de stappen pas aan het einde van de week af heb ik ga het komende week als volgt aanpakken: tijdens de week houd ik bij wat ik doe, de aanpak, resultaat ect. en aan het einde van de week maak ik hier een blogartikel van.
Ook maak ik mij zorgen over het volbrengen van de 16 ontwikkelingsstappen. Het is nu al week 7 van 8 en ik heb nog maar de helft van het aantal stappen dat ik zou moeten hebben afgerond. Ik weet ook niet hoe ik dit het beste kan aanpakken, omdat ik al wel wekelijks genoeg uur in het project steek. 

Tijdsbesteding


Voortgang week 6 - interactieve inhoudsopgave


Mijn doel is om een digitaal interactief prentenboekje te maken. Bij een boekje hoort ook een inhoudsopgave, of een overzicht van de hoofdstukken/pagina's. Bovendien is het makkelijker om op deze manier snel verder door het boek te bladeren. Daarom heb ik deze week onderzocht hoe ik een interactieve inhoudsopgave kan maken en deze toegevoegd aan mijn slides.

Aanpak

Net als bij het maken van de GSAP slides heb ik voor deze ontwikkelingsstap een voorbeeld stap voor stap doorgenomen. Hierbij heb ik gekeken wat er gebeurd als ik iets in de code aanpas en heb ik op het internet gezocht naar dingen die ik nog niet kende. 

Leerervaring

Op een gewone pagina zou je JumpScroll kunnen gebruiken. Hiermee spring je een aantal pixels naar boven of beneden op de pagina als je scrolt. Dit kon ik echter niet gebruiken bij mijn pagina omdat ik horizontale slides gebruik. 

Na veel onderzoeken en uitproberen ben ik tot deze stappen gekomen:

Stappenplan knoppen maken:
1.      HTML: maak een div en geef deze een class en een id, zet de tekst in de div
2.      CSS: geef de class een kleurtje enzo, een pointer en marginproperties
3.      JS:
a.        document.getElementById('#id');
 $(document).on("click", "#id", function(){
   {GOpaginanummer(-1)}
})
                              Hiermee haal je eerst het element op uit HTML. Vervolgens zorg je ervoor dat wanneer je erop klikt er  iets gebeurt. Wat is gebeurt bepaal je met het GO-functie.
b.      Go functie:
function GO2(e){
  var SD=isNaN(e)?e.wheelDelta||-e.detail:e;
  if(SD<0){tl.play(‘nummer’)}else{tl.reverse()};
};
Je geeft het eerst een naam (GO1, GOp2 ect.)
De eerste regel kopieër je
In de tweede regel pas je ‘nummer’ aan aan het getal van hoeveel pagina’s je verder wilt. 0 = één pagina, 1 = twee pagina’s , -1= pagina terug ect.
Dit komt overeen met het voorblad = 1
Van voorblad naar konijn = 2 (pagina 3 voorblad niet meegerekent. )
wheelDelta: is een atribute value. Hiermee wordt gemeten hoe ver je scrollt (turn of the mousewheel). Als het van de gebruiker af roteert is het positief, als het naar de gebruiker toe roteert is het negatief.
c.      Voor pagina knoppen:
function GOp1(e){
   tl.play(0);
};
Cijfer vervanger door aantal pagina’s vooruit

Resultaat


Op de beginpagina staan knoppen naar alle andere pagina's. Door hierop te klikken blader je direct naar de betreffende pagina. De knoppen bovenin staat op elke pagina, hiermee kun je één pagina vooruit of achteruit bladeren  of direct naar de beginpagina gaan. 
Bekijk hier de code en het resultaat: http://codepen.io/codesen/pen/VKQodZ?editors=1010 


Bronnen


Voortgang week 6 - Slides technieken



Vorige week had ik al onderzoek gedaan naar hoe ScrollMagic werkt, hoe ik daarmee animaties kan triggeren en elementen op een pagina kan pinnen. Deze week heb ik ontdekt hoe ik (horizontale) slides kan maken, zowel met als zonder ScrollMagic.

Aanpak

Met de ScrollMagic slides was ik al aardig ver gekomen vorige week. Deze week ben ik hiermee verder gaan door verschillende dingen uit te proberen. 
Voor de slides met GSAP heb ik gewerkt aan de hand van dit voorbeeld:  http://codepen.io/MAW/pen/XmozON
Ik heb de hele code stap voor stap doorgenomen. Alle stukjes die ik nog niet kende of niet begreep heb ik opgezocht op internet. Ook heb ik gekeken naar wat er allemaal weggelaten kon worden zonder dat dit de werking van de code aantastte (bijvoorbeeld het logo).
Vervolgens heb ik zelf een code geschreven waarbij de pagina's slides wanneer je scrollt. Ik heb op elke pagina een GSAP techniek neergezet. Sommige dingen hiervan had ik al eens eerder gemaakt en sommige waren nieuw en heb ik dus eerst opgezocht op internet. Ik heb nergens code gekopieerd, maar soms wel overgetypt. 

Leerervaring

Veel proberen werkt. Soms lukt iets de eerste keer niet, maar als je het dan nog een keer probeert werkt het wel. Door zelf de code te typen (in plaats van de kopiëren) ben je veel bewuster bezig met de code. Het duurt weliswaar een stuk langer, maar je leert ook beter waar je hoofdletters moet gebruiken, waar komma's moeten en meer kleine details die je snel over het hoofd ziet wanneer je een code kopieert. 
Wanneer je een code stap voor stap doorneemt wordt deze begrijpelijker en makkelijk zelf te gebruiken. Ik heb veel moeten opzoeken, maar daar heb ik ook veel van geleerd:

<span> element zorgt ervoor dat je dingen op een pagina kunt groeperen. 
< fa fa-[…]> wordt gebruikt voor symbolen op pagina's 
Z-index: bepaald welke object vooraan staan. Een element met een grotere ‘stack order’ komt altijd voor een element met een lagere ‘stack order’. De z-index werkt alleen wanneer er ook een position is toegekend aan een element.
document.querySelectorAll: haalt een lijst op van elementen binnen het document die overeenkomen met de gespecificeerde selectoren. Van de lijst wordt een ‘nodeList object’ gemaakt. Deze ‘nodes’ kunnen worden aangepast door middel van indexcijfers. [1] staat voor het eerste object met deze selector [2] voor het tweede element, ect.
for (var i=0;i<): hierbij word een loop gebruikt en hierin de variabelen i gebruikt.
createElement(): Hiermee wordt een 'element node' gemaakt
document.addEventListener(): Deze methode hecht een 'event handler' aan het document.
nodes: Elk HTML-element is een 'node'.
NaN= Not-A-Number, de isNaN() functie bepaalt of een waarde NaN is of niet


Andere dingen die ik geleerd heb bij het maken van deze code: 

Als je de viewbox van een SVG aanpast kan de grootte van de afbeelding veranderen. De eerste twee getallen bepalen de positie binnen het scherm, de laatste twee getallen bepalen de breedte en hoogte. Hoe groter de getallen, hoe kleiner de afbeelding.

Als je meerdere classes wilt toevoegen aan een element kun je dat zo doen: class= “name1 name2”

Om je muisaanwijzer in een handje te laten veranderen wanneer je over een klikbaar object gaat moet je dit in je CSS code aanpassen. Je geeft het object dan een cursor: pointer; 

Wanneer je text in illustrator in een afbeelding zet en dit als SVG exporteert kun je de tekst nog aanpassen in de code. 

Met repeat() en yoyo() kun je een tween laten herhalen. 

Ik geef een overzichtje van de technieken die ik als content heb toegevoegd in de slides:
Pagina 1: cirkel veranderd van kleur
-        Click function
-        Reverse
-        Timeline
Pagina 2: staartje beweeg:
-        SVG optimaliseren en organiseren
-        Timeline
-        Repeat en yoyo
Pagina 3: hartjes wanneer je klikt
-        Click function
-        Stagger
-        Svg
-        Meerdere classes
Pagina 4: Bunny met tekstwolkje:
-        Tekst in SVG
-        Tween
-        TransformOrigin
Pagina 5: egel met blaadjes:
-        Blaadjes verdwijnen wanneer je erop klikt
-        Binnen één SVG

Maar wat heb je nodig om de slides met GSAP te maken:

Je maakt een timeline met hierin de beweging van de pagina's. Deze timeline zet je in een loop. De loop weet of je naar voren of naar achteren scrollt en op basis daarvan wordt de slide verschoven. Je moet ook een pauze invoegen zodat de timeline stopt wanneer je op de volgende pagina bent. 
Je hebt een functie nodig die weet of je naar voren of naar achteren scrollt. Tenslotte heb je een Eventlistener nodig om het scrollen mogelijk te maken. 

Resultaat

Het resultaat is dat wanneer je scrollt er een pagina van de zijkant wordt 'omgeslagen'. Op elke pagina staat een SVG afbeelding waarvan één alleen beweegt en de andere interactief zijn. 
Bekijk de code en het resultaat hier: http://codepen.io/codesen/pen/bwaRkR?editors=0010 

Slides met ScrollMagic: http://codepen.io/codesen/pen/WGzaOa

Bronnen

Voortgang week 6 - Audio bij interactieve animatie


Vorige week schreef ik al in een bericht hoe ik audio toevoegde aan een timeline. Deze week heb ik een interactieve animatie gemaakt en hier audio aan toegevoegd.

Aanpak


Ik heb gewerkt aan de hand van dit voorbeeld: http://codepen.io/iamjoshellis/pen/KVdQqm 
Eerst heb ik een SVG-code gemaakt. Dit heb ik gedaan door een afbeelding te dowloaden en die te organiseren. Hiervoor heb ik alle elementen in de juiste laag bij elkaar gezet en deze lagen namen gegeven. In SublimeText heb ik de code overzichtlijk neergezet door alle groepen los van elkaar te zetten. Vervolgens heb ik geluiden van de piano opgezocht en gedownload. Deze mp3 bestanden heb ik omgezet naar ogg bestanden. Vervolgens heb ik alles samengevoegd in Sublime Text. 

Leerervaring

Voor elke toets heb je de volgende onderdelen nodig:
  1. Een timelinevar: F1 = new TimelineLite();
  2. Een variabele: var F4 = $("#F4")[0];
  3. In de timeline een .call en .reverse: F1.call(playF4 .reverse();
  4. Een function: function playF4() {F4.play();
  5. Een click-function: $(document).on("click", "#F1key", function(){ F1.play();F1.restart();})
De variabele koppelt de audio vanuit HTML aan JS. In de timeline wordt de audio functie met opgehaald. Door een reverse toe te voegen kun je de toets meerdere keren aanslaan. In de function wordt de audio afgespeeld. Door de click-function wordt de juiste timeline afgespeeld wanneer je op een toets klikt. 
Ik heb in de timeline ook nog een stroke-color toegevoegd, zodat wanneer je op een toets klikt deze geel-omrand wordt. 

Resultaat

Het resultaat is een piano die je kunt bespelen. De toets krijgt een gele rand wanneer je er op klikt en de bijbehorende toon wordt afgespeeld. 

Dit is de JavaScript code van één van de toetsen. Voor elke toets zijn dezelfde elementen nodig. 

Bronnen

zondag 2 oktober 2016

Voortgang week 5 - ScrollMagic

Het probleem van GreenSock codes in ScrollMagic was sneller opgelost dan ik had ingeschat. Hierdoor had ik veel tijd om mij te verdiepen in ScrollMagic.
Vorige week had ik al de basiselementen van ScrollMagic geleerd, het was alleen nog niet gelukt om een eigen code te laten werken. Deze week heb ik dus de ongedane kennis van vorige week toegepast en nieuwe mogelijkheden en technieken van ScrollMagic ontderzocht, getest en zelf toegepast.

Aanpak

De code van vorige week werkte niet, dus heb ik op het GreenSock-forum om hulp gevraagd (link naar topic). Ik wist nu hoe ik scroll-animaties kon maken met CSS of met GreenSock. Vervolgens ben ik zelf verschillende technieken gaan uitproberen. 
Ik heb uitgezocht hoe ik een timeline kan triggeren. Dit heb ik gedaan door verschillende voorbeelden te bekijken, na te maken en aan te passen. Vervolgens heb ik zelf een code geschreven waarin ik dit heb toegepast.
Ik heb ook verschillende tutorials gevolgd om nog wat meer basiskennis over ScrollMagic te leren, zodat ik niet allen de code kan gebruiken maar ook een goed idee heb van wat ik aan het doen ben.
Door verschillende codes te schrijven ontdekte ik wat wel werkt en wat niet.
Ik heb ook onderzocht en uitgeprobeerd hoe ik een element kan pinnen. Dit heb ik geleerd door een tutorial te volgen en aan de hand daarvan een code te schrijven. Vervolgens wilde ik ook dat ik een element gepint werd zodra deze aan de bovenkant van de pagina kwam. Hiervoor heb ik voorbeelden gebruikt en zelf verschillende dingen uitgeprobeerd.

Leerervaring

Je kunt soms heel lang met een probleem zitten, maar door een expert te vragen kan het heel snel worden opgelost. Zo wist ik niet dat ik een link naar een animatie plugin moest gebruiken om de code te laten werken. Dit zorgde ervoor dat ik ging zoeken naar fouten in de code. Door mijn vraag op het forum te posten kreeg ik snel antwoord op mijn vraag en heb ik veel tijd bespaard.

Voor mij is het fijner om de scoll-animaties te maken met GreenSock in plaats van in CSS. Dit komt doordat ik hiervoor nog niet met CSS-animaties had gewerkt en de GreenSock tweens en timelines overzichtelijker zijn. 
Hoe werkt dit:
Het werkt bijna hetzelfde als de CSS animatie. De enige aanpassingen zijn:
-        Je gebruikt GEEN .setClassToggle
-        In plaats daarvan gebruik je:  .setTween
-        Hierachter zet je wat je normaal ook in een tween zet
OF je verwijst naar een variabele waarin je een tween hebt genoemd  

Elementen pinnen:
- zet de elementen in HTML in een <div id="pinElement">
- trigger de div in je ScrollMagic.Scene
- zet in je ScrollMagic.Scene een .setPin("pinElement")

Opties voor Controller en Scene
Naast duration en offset zijn er ook andere dingen die je kunt aanpassen:
- triggerHook: dit is een getal tussen de 0 en 1 waarmee bepaald wordt waar op de pagina je element wordt getrigger. In plaats van een getal kun je ook kiezen voor 'onLeave'(top van pagina), 'onCenter, en onEnter (onderkant van pagina)
- je kunt de triggerIdicators een naam, kleur ect meegeven. bv: name: 'slide scene',
- het toevoegen van een duration zorgt ervoor dat je wanneer je scrollt invloed hebt op de animatie. Je kunt dit langer en korter maken waardoor de animatie sneller of langzamer zal gaan.

Resultaat

Ik heb veel verschillende codes geschreven, waarvan sommige niet 100% werken en andere wel. 
Wat is gelukt met ScrollMagic:
- het laten werken van de CSS-animatie: http://codepen.io/codesen/pen/RGpyGz 
- het triggeren van een tween: http://codepen.io/codesen/pen/LRLEYZ 
- het triggeren van een timeline: http://codepen.io/codesen/pen/XjZNyY
- het pinnen van elementen aan de top van de pagina: http://codepen.io/codesen/pen/pEAqgr 

Extra codes:


Bronnen




vrijdag 30 september 2016

Voortgang week 5 - SublimeText, audio en JS

Dit is een voortgang op het artikel: artikel: http://sennacreativetechnologies.blogspot.nl/2016/09/voortgang-week-4-geluid-toevoegen-en.html 

Hierbij had ik een probleem met Sublime Text waardoor het lukte lukte op de codes te testen. Sommige codes werkten wel en ander niet. Ik moest dus eerst dit probleem oplossen voordat ik verder kon met het beantwoorden van de vraag.

Aanpak

Het probleem was voor mij onduidelijk. Eerst heb ik gecontroleerd of alle links klopten. Ik zette een 'alert' in mijn javascript waaruit bleek dat JS goed gekoppeld was. Daarna controleerde ik op spelling- en typefouten in mijn code, maar die kon ik niet vinden. Vervolgens heb ik gekeken of er misschien errors in de code zaten door 'inspect element' te gebruiken. 
Ik kreeg een tip van Carine om een code vanuit Codepen te exporteren. Hierdoor zouden alle links meteen kloppen. Dit hielp erg bij het ontdekken van de fout. 
Ik exporteerde een werkende code vanuit CodePen. Deze vergeleek ik met mijn niet werkende code's in Sublime Text. 

Toen de code weer werkte ben ik verder gegaan met onderzoeken hoe de audio in een timeline gezet kan worden. Hiervoor gebruikte ik verschillende voorbeelden, twee post met uitleg op twee verschillende forums. 

Leerervaring

Het stap voor stap doornemen van de code is erg leerzaam. Hierdoor ontdek je sneller fouten. 
Ook heb ik geleerd hoe je een 'alert' in je JS zet om te checken of de code goed gekoppeld is. 

Voor het toevoegen van audio aan je timeline moet je eerst een variabele aanmaken. 
var audio = $("#pling")[0];

Ik heb opgezocht wat het verschil is tussen
var audio = $("#pling")[0]; en var audio = document.getElementById(".pling")
Waar het op neer komt is dat $(“element”)[0] een iQuery code is en document.getElementById is een JavaScript code.
De jQuery code zorgt ervoor dat alle elementen in een object worden verpakt.
De JavaScript code zorgt ervoor dat de functies van een DOM-element in ophaalt met diens eigenschappen. 

Je zet de audio in een 'function PlaySound'. Deze functie kan worden opgeroepen door in je timeline de 'call' functie te gebruiken. Hiermee worden de gegevens van de functie opgehaald, in dit geval de audio. 

Resultaat

Ik kan nu in de timeline een audiofragment zetten. De audio speelt dan tijdens de animatie af. 



JavaScript


Vorige week heb ik mij verdiept in JavaScript. Deze week kon ik dit goed toepassen in mijn codes. Enkele voorbeelden hiervan zijn:

- het gebruik van variabelen in vrijwel alle codes
- Het gebruik van $(document) aan het begin van een code, zodat de pagina goed geladen wordt en elementen uit HTML kan halen: http://codepen.io/codesen/pen/LRLEYZ
- het gebruik van het 'this' element, waarmee verwezen kan worden naar div's in HTML en elementen daaruit opgehaald kunnen worden: http://codepen.io/codesen/pen/ORjBzr 
- Het gebruik van each(function() om elementen één voor één op te halen: http://codepen.io/codesen/pen/ORjBzr 
- het gebruik van functions, zoals in de code voor de audio gebruikt om de audio af te spelen

Bronnen

maandag 26 september 2016

Voortgang week 4 - geluid toevoegen en scrollMagic


Deze week heb ik mij ook verdiept in het toevoegen van geluid aan een animatie en de mogelijkheden van scroll-effecten.

Aanpak

Voor het toevoegen van geluid heb ik eerst uitgezocht hoe je audio in HTML kunt afspelen. Vorig jaar had ik dit al eens gedaan, maar ik wist niet meer precies hoe het moest. Dit zocht ik op en ik ging ook op zoek naar een website waarmee je mp3 en ogg bestanden kunt maken. 
Vervolgens wilde ik de audio toevoegen aan een timeline, zodat deze tegelijk met de animatie zou worden afgespeeld. Hier was echter niet veel uitleg over te vinden. Uiteindelijk vond ik wel wat nuttige informatie. Vervolgens heb ik geprobeerd om dit zelf toe te passen. Echter kreeg ik problemen met GreenSock en Sublime Text. De GreenSock animaties wilde niet meer afspelen. Dit moest ik dus eerst op gaan lossen. Hier ben ik lang mee bezig geweest, maar het is niet gelukt om het probleem op te lossen. Ik heb nog op het GreenSock forum om hulp gevraagd, maar daar heb ik voor alsnog geen reactie op gehad. Omdat je de audiobestanden niet in CodePen kunt gebruiken kan ik dus niet verder met deze ontwikkelstap. 

Voor de mogelijkheden van scroll-effecten op een webpagina ben ik eerst naar wat voorbeelden gaan zoeken. Vervolgens heb ik gegoogled en kwam ik uit op een website met een veelgebruikte plugin. Ik ging uitzoeken hoe dit werkte. Ook vond ik nog een andere website. Op die website stond de vernieuwde versie van de plugin. 
Vervolgens ben ik verschillende tutorials gaan volgen. Tot slot heb ik zelf een code geschreven. Helaas had ik deze week veel problemen met mijn laptop, wat ervoor zorgde dat ik niet goed kon werken aan de laatste ontwikkelingsstappen. 

Leerervaring

Ik kwam erachter dat GreenSock niet altijd werkt met Sublime Text. Deze week lukte het niet om een nieuwe code te laten werken. De codes werkten wel in Codepen. Ik heb wel geleerd hoe ik een <allert> kan toevoegen zodat ik weet dat mijn JS goed gekoppeld is aan mijn pagina. 

Het toevoegen van audio aan je HTML kan met de <audio> tag. Hierin zet je een mp3 bestand en een ogg bestand. Via deze site kun je die bestanden maken: http://media.io/ 
Je kunt de algemene atributes gebruiken voor audio. 

De plugin voor scoll-effecten heeft ScrollMagic. Dit is een jQuery plugin voor scroll animaties met GreenSock. 

Hoe werkt het:
1.      Je plaatst de <script> in je code. Zowel jQuery als de ScrollMagic code
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script src="jquery.scrollmagic.min.js"></script>
<script src="jquery.scrollmagic.debug.js"></script>
2.      Voor elke scroll containter heb je een <controller>
var controller = new ScrollMagic.Controller();
3.      Een <scene> bepaald wat er wanneer gebeurd. Hierdoor wordt bepaald wanneer de controller moet reageren en hoe.
var scene = new ScrollMagic.Scene();
var scene = new ScrollMagic.Scene({
  offset: 100, // start scene after scrolling for 100px
  duration: 400 // pin the element for 400px of scrolling
})
var scene = new ScrollMagic.Scene({
  triggerElement: '#pinned-trigger1', // starting scene, when reaching this element
  duration: 400 // pin the element for a total of 400px
})
.setPin('#pinned-element1'); // the element we want to pin
 
// Add Scene to ScrollMagic Controller
controller.addScene(scene);
 
4.      In de <scene> kun je objecten plaatsen.
5.      Voeg de <scene> toe aan de controller.
Je kunt er ook voor kiezen om de controller toe te voegen aan een <scene>
6.      De volgorde waarin de elementen in de js staan, kan bepalen of de code werkt. 

Resultaat

Helaas is het dus niet gelukt om audio toe te voegen aan mijn animatie. Ik ga komende week dit probleem op lossen door te zorgen dat GreenSock gewoon werkt in Sublime Text. 
De scroll-animatie was gelukt, maar toen ik deze had opgeslagen werkte het niet meer. Ik heb nog wel de code: http://codepen.io/codesen/pen/RGpyGz

Bronnen


Voortgang week 4 - JavaScript


Tijdens het werken met GreenSock ontdekte ik steeds meer dat het erg belangrijk is om een goede kennis van JavaScript te hebben. Je hebt dit namelijk nodig als je verder wilt komen met GreenSock. Nu is JavaScript op zichzelf al ingewikkeld om te leren. Ik heb geprobeerd de essentie van JavaScript te leren zodat ik dit kan gebruiken bij GreenSock.

Aanpak

Ik kijk ook nog even terug naar wat ik in eerdere weken al onderzocht heb voor JavaScript. Ik begon met op opzoeken van wat het is. Vervolgens ben ik gaan wat verschillende onderdelen van JS gaan opzoeken om te ontdekken wat het is en hoe het werkt. 
Waar ik vooral veel tijd in heb gestoken is het doornemen van de JS tutorial van W3 schools. Hierin werd heel veel uitgelegd. Het grootste deel heb ik alleen doorgelezen. Bij de elementen die mij belangrijk leken heb ik ook even een klein testje gemaakt of het mij zelf lukte. Deze testjes zijn ingebouwd in de site en dus heb ik hier geen documentatie van.

Leerervaring en resultaat

Ik kwam erachter dat JS heel erg uitgebreid is en ook dat het echt tot de basiskennis van iedere webontwikkelaar hoort. Verder heb ik veel geleerd over wat er mogelijk is met JS en hoe je bepaalde elementen kunt gebruiken. 
Ik weet nu iets beter wat ik aan het doen ben. Er valt nog veel meer te leren, en ik heb ook niet alles in één keer onthouden. Ik zal dus vaak nog even terugkijken naar de tutorial. 
Ik heb geen concreet resultaat van dit onderzoek. Wel is de kennis die ik nu heb toegepast in mijn verdere gebruik van GreenSock. 

Bronnen

Voortgang week 4 - SVG animeren


Vorige week heb ik uitgezocht hoe ik een SVG-bestand kan maken en hoe ik deze kan gebruiken in HTML en GreenSock. Deze week ben ik verder gegaan door een animatie te maken. 

Aanpak

Ik heb eerst een tutorial gevolg, namelijk deze: https://sarasoueidan.com/blog/structuring-grouping-referencing-in-svg/ 
Na het volgen van deze tutorial heb ik zelf een eenvoudige animatie gemaakt:Link naar codepen
Bij het maken van die animatie heb ik vooral veel uitgeprobeerd. Ik heb codes aangepast en gekeken wat er veranderde. 
Het lukte al om de SVG te animeren, maar ik had het idee dat het ook een eenvoudigere en overzichtelijkere manier zou moeten kunnen. Daarom zocht ik nog een ander tutorial op: https://ihatetomatoes.net/how-to-animate-svg-with-greensock/
Ook ontdekte ik deze website: https://jakearchibald.github.io/svgomg/. Hiermee kan je de SVG code vereenvoudigen. 
Ten slotte maakte ik nog een SVG en animeerde ik deze met GreenSock: Link naar codepen

Leerervaring

Ik ga graag al direct aan de slag. Ik probeer dingen uit, in dit geval de code aanpassen en zien wat er veranderd. Ik heb bij het maken van deze SVG wel gemerkt dat het handiger kan zijn om eerst een tutorial te volgen. Hierdoor werk je efficiënter.

Wat ik geleerd heb over het animeren van SVG is dat het belangrijk is om je SVG code overzichtelijk te maken. Het beste kun je in Illustrator al de lagen in groepen plaatsen, deze groepen worden in de code ook bij elkaar gehouden. Ook is het mogelijk om zelf nog groepen te maken. Dit kan met het <g> element. Je geeft de <g> (groep) een id en hiermee kan je alles wat in deze groep staat als één afbeelding animeren.
Ik heb ook geleerd wat <transformorigin> is en hoe je dit kunt gebruiken. Dit is niet perse een functie om alleen SVG te animeren, het kan ook toegepast worden op andere onderdelen van animatie. Met de <transformorigin> kun je bepalen vanaf waar de transformatie begint. Bij de animatie van de dolfijn heb ik dit gebruikt om de dolfijn om een punt te laten roteren. 

 Resultaat

De eerste SVG animatie die ik maakte bestond uit het transformeren van grootte en kleur van (onderdelen van) de illustratie: http://codepen.io/codesen/pen/VKjjqa

Bij de tweede animatie die ik maakte ging het vooral om het overzichtelijk maken van de code. Verder transformeerde ik hier grootte, rotatie, transformorigin, positie en doorzichtigheid. Ik zorgde ervoor dat delen van de timeline tegelijkertijd werden afgespeeld door labels toe te voegen. http://codepen.io/codesen/pen/XjNWGP 

Bronnen


zondag 18 september 2016

Voortgang week 3 - SVG

De tweede ontwikkelingsstap waar ik deze week aan wilde werken is combineren van SVG en GreenSock. Ik wist nog niet wat SVG was, dus daar ben ik mee begonnen. Ik heb ongeveer vier uur onderzoek gedaan.

Wat is SVG?

"Scalable Vector Graphics, afbeelding die niet zoals een bitmap elke pixel beschrijft, maar alle lijnen, bogen etc opslaat om telkens de afbeelding opnieuw te genereren als deze wordt geladen. " - http://www.pc-tutorials.nl/computerwoordenboek.php?lijst 

Waarom zou je SVG gebruiken?

Het verschil tussen SVG en, bijvoorbeeld, Jpeg is te vergelijken met het verschil tussen werken in Photoshop en werken in Illustrator. Met Photoshop werk je in pixels. Wanneer je inzoomt worden de pixels vergroot, waardoor je een korrelige afbeelding krijgt. Bij illustrator wordt er gewerkt met vectoren. De lijnen worden berekent waardoor je oneindig kunt inzoomen zonder dat je losse pixels gaat zien. Bij SVG werkt dat min of meer op dezelfde manier. Er wordt gekeken naar de lijnen waaruit de afbeelding is opgebouwd.

Voordelen van SVG ten opzichte van Jpeg:
Met SVG hoef je niet alle lagen die je apart wilt animeren ook apart in je HTML te zetten. Één code zorgt ervoor dat alle onderdelen bij elkaar staan, maar wel los van elkaar te animeren zijn. Sommige dingen zoals kleur en lijndikte zijn alleen aan te passen met SVG. 
Je kunt zo ver inzoomen als je wilt zonder verlies van kwaliteit.

Nadelen:
De code klopt niet meer wanneer je een klein deel wilt aanpassen. Wanneer je allemaal losse afbeeldingen zou gebruiken, kun je gewoon één afbeelding vervangen. Ook is de code lastiger te lezen dan losse afbeeldingen. In verschillende browsers kan het effect anders zijn. SVG is niet geschikt voor gecompliceerde afbeeldingen. 

Hoe werkt het?

Je maakt een vector-afbeelding in bijvoorbeeld Illustrator. Deze afbeelding exporteer je als SVG bestand. Hierdoor wordt er een code geschreven voor jou afbeelding. Deze code kun je in een HTML bestand zetten.

De lagen van je afbeeldingen worden verwerkt en krijgen in SVG een class. Je kunt deze classes aanpassen. Het is ook mogelijk om meerdere onderdelen in een groep te zetten en deze een class of ID te geven.

Met <translation> kun je de x en y aanpassen. Bijvoorbeeld: 
<circle cx="0" cy="0" r="100" transform="translate(100 300)" /><circle cx="0" cy="0" r="100" transform="translate(100 300)" />

Met scale(<sx> [<sy>]) kun je de grootte aanpassen. Wanneer alleen de X wordt aangepast blijven de verhoudingen gelijk. 

Met skewX(<skew-angle>) skewY(<skew-angle>) kun je de helling bepalen. 

Met rotate(<rotate-angle> [<cx> <cy>]) kun je roteren. 

Wanneer je met GreenSock werkt kun je in een TweenLite of TweenMax de eigenschappen aanpassen zoals je dat ook zou doen van een afbeelding of tekst. 

Mijn code

Ik een SVG-bestand gemaakt met Illustrator en deze in HTML gezet. Hiervan heb ik van een paar classes met een onduidelijke naam de naam veranderd. Vervolgens heb ik de grootte van de SVG aangepast in CSS. Met GreenSock heb ik het rondje vergroot in een TweenLite. 

Bronnen