Archief - [AS3] Flip Card

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

ZackWhite

Legacy Member
Hoi

'k zal het kort houden :) Ik ben bezig aan een klein portfolio in Flash CS5. Nu heb ik 9 kaarten en telkens als ik over 1 ga me mijn muis zou ik willen da die kaart omdraait.

Nu ik dacht, 9 kaarten dus 9 event listeners en 9 functies. Geen idee of dit al juist is eigenlijk.

Maar ik gebruik dus volgende simpele code:
Code:
import flash.events.MouseEvent;

Object(this).Card1_mc.addEventListener(MouseEvent.ROLL_OVER, Card1Over);
function Card1Over(evt:MouseEvent):void{
	this.Card1_mc.scaleX *= -1;
}

Maar ook als ik gewoon op die kaart een beetje beweeg dan nog voert hij die functie uit. Dus daar zit ik al een beetje vast.

En als kleine extra zou ik eigenlijk willen da da een soort van animatie is da die kaart omdraait. Op het internet al veel 3D animaties daarvan gevonden maar die gebruiken allemaal plug-ins :s

Iemand die mij kan verder helpen?

mvg

Edit: Heb een voorbeeld gevonden van wat ik wil bereiken:
Die hele bovenste rij :)

Bumbolt

Legacy Member
Je gaat plugins moeten gebruiken als je zoiets wil bereiken. Je kan het ook in flash maar lijkt me veel moeilijker enigste wat je moet doen voor die plugins is een folder naast je fla zetten en een import statement bovenaan je script.

Om je probleem op te lossen kan je een boolean bijhouden wanneer de muis op het stuk zit. (Je tween staat dan op je over button) en dan maak je een release functie waarop je die boolean weer veranderd met een functie met onrelease.
Of gebruik gewoon Mouse-over event die reageert zo niet dacht ik.

Voor tweens: tweenlite of tweener. (Met tweenlite en tweenmax kan je alles maken in principe)

Best geen 9 eventlisteners onder elkaar zetten steek je in een array (de namen) en voeg zo listeners toe.

Genoeg online materiaal

ZackWhite

Legacy Member
Zit al ietsje verder:

Code:
import flash.events.Event;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var newY:Number;
Object(this).Card1_mc.addEventListener(MouseEvent.CLICK,rotateRight);

function rotateRight(e:Event):void{
	newY = Object(this).Card1_mc.rotationY;
	var myTween:Tween = new Tween(Card1_mc, "rotationY", Strong.easeOut, newY, newY+180, 1, true);
}

Nu kan ik door gewoon op de kaart te klikken ze al laten draaien. Nu natuurlijk als ze omgedraaid is, moet er iets anders zichtbaar zijn dan de achtergrond.

Wat ik denk nodig te hebben zijn wss:

Variabele om te zien welke zijde van de kaart zichtbaar is.

Code:
var visSide: boolean = true;

Maar dan? :unsure:

EDIT: Ik wou via de newY werken, vermits dit de waarde is van de rotatie. Deze gaat van 0 naar 180. Dus ik dacht, ik controleer, indien newY > 90, goToAndStop(2) van mijn movieclip (Voorkant en achterkant van de kaart in 1 movieclip gestoken).

Maar dit deed nix wanneer ik het in een if'ke had gestoken. Dus doe ik een trace(newY) op het einde van mijn functie. En nu blijkt dat newY om het even op welk moment op 0 blijft staan terwijl hij wel degelijk op 180 zou moeten staan na dat de functie is uitgevoerd.

PS: De kaart draait 180 graden dus daar zit geen probleem in, enkel dat die waarde op 0 blijft staan.

ZackWhite

Legacy Member
Ben al zover da de afbeelding op de kaart verandert dmv een timer:
Code:
import flash.events.Event;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var newYCard1:int = 0;
var visSideCard1:Boolean = true;
var myTween:Tween = new Tween(Card1_mc,"rotationY",Back.easeIn,newYCard1,newYCard1 + 180,1,true);
myTween.stop();
Object(this).Card1_mc.addEventListener(MouseEvent.MOUSE_OVER,rotateRightCard1);

function openCard1(e:Event):void
{
	gotoAndStop('card1');
}

function rotateRightCard1(e:Event):void
{
	if (visSideCard1 == true)
	{
		newYCard1 = Object(this).Card1_mc.rotationY;
		myTween.start();
		var timerCard1:Timer = new Timer(820,1);
		timerCard1.addEventListener(TimerEvent.TIMER, changeCard1);
		timerCard1.start();
		visSideCard1 = false;
	}
	else
	{
		Object(this).Card1_mc.removeEventListener(MouseEvent.MOUSE_OVER,rotateRightCard1);
		Object(this).Card1_mc.addEventListener(MouseEvent.CLICK,openCard1);
	}
}

function changeCard1(e:TimerEvent):void{
	Object(root).Card1_mc.gotoAndStop(2);
}

Maar hoe kan ik nu zeggen, als m'n muis van het object gaat, keer dan de animatie om?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan