PDA

Volledige versie bekijken : Hoe kan ik mijn achtergrond laten bewegen door buttons


Luviuz
%Europe/Berlin %920 %2006, 23:05
Hallo iedereen!

we hebben een dringende vraag: onze website is bijna volledig afgewerkt. Maar er is 1 gedeelte waar we niet verder geraken.

We zouden onze achtergrond willen laten bewegen door te klikken op menu buttons. Bvb als een bezoeker klikt op "about us" klikt, dan zal die achtergrond zich gaan verplaatsen naar een ander deel van de achtergrond (bvb foto= 2500x1700pixels, workspace=1000x661).

Op zichzelf als je het menu'tje afgaat in logisch volgorde lukt dit principe perfect (met motion tweening). Maar als we van de ene menu naar de andere springen dan springt die natuurlijk plots naar de opgegeven frame zonder die motion animatie. beetje het principe van de "Sliding Pages tutorial" (http://http://www.flashvista.com/details/item/746/)

Kan iemand ons zo snel mogelijk helpen aub [?]

Alvast bedankt!

Fast Life Productions

Emveedee
%Europe/Berlin %936 %2006, 23:28
Zoek eens op het forum op easing,
dat zou je een heel eind op weg moeten helpen.

Laiverd
%Europe/Berlin %943 %2006, 23:38
Je moet dus gaan animeren m.b.v. actionscript. Met een onEnterFrame loop in combinatie met het update van de _x positie (ervan uitgaande dat je alleen horizontaal wilt verschuiven) kan dat. Het handigst is om daar een prototype functie voor te schrijven, en de diverse x-posities in een Array op te slaan (althans dat zou ik het makkelijkst vinden, omdat je dan maar op 1 plaats evt. aanpassingen hoeft te doen); een collectie objecten met een x property kan natuurlijk ook (dat werkt wellicht wat transparanter). even uit de lossen pols hoe zoiets eruit zou zien

// speed of movement
var s = 3;
// menu items
item1 = new Object()
item1.x = 200;
item2 = new Object()
item2.x = 300
// prototype function
MovieClip.prototype.moveTo = function(xpos){
if (xpos < this._x){
dir = -1
} else {
dir = 1
}
this.onEnterFrame = function(){
this._x += s*dir
if (dir == -1){
if(this._x <=xpos){
this._x = xpos;
delete this.onEnterFrame
}
} else if (dir == 1){
if(this._x >= xpos){
this._x = xpos;
delete this.onEnterFrame
}
}
}
}
}
// call the function for the item1 button: example
btn1.onRelease = function(){
background_mc.moveTo(item1.x)
}

Zoiets. Niet op syntax fouten gecheckt en niet gecontroleerd op werking. As is ... ;)

John

Luviuz
%Europe/Berlin %393 %2006, 10:26
ok thx! Mss klinkt dit stom, ben niet zo'n specialist in actionscript. maar waar moet ik die script plaatsen? op een button of op mijn achtergrond?

ook zou ik ervoor willen zorgen dat het niet enkel horizontaal, maar ook vertikaal beweegt, hoe doe ik dat? Als jullie liever de flashfile erbij willen laat het dan weten, dan stuur ik ze door.

Laiverd
%Europe/Berlin %415 %2006, 10:58
Het wordt lastig om hier een cursus actionscript te gaan geven, maar als je in bovenstaand script ook vericaal wilt bewegen, dan zul je de prototype functie moeten aanpassen. Voordat dat gaat werken, lijkt het me slim om ee volledig begrip te hebben van wat die functie nu doet; de as dictionary kan je daarbij behulpzaam zijn. Wat betreft de plaatsing van het script: alles behalve de button actie kan in principe op het eerste frame van je movie staan. De button actie evt. ook maar dan moeten de buttons zelf met de juiste instancenames ook in dat eerste frame staan. Anders zet je de buttonacties pas op het frame waar de buttons komen.

John

Luviuz
%Europe/Berlin %436 %2006, 11:28
ok gaan we proberen, bedankt john