Archief - Stom actionscript probleem

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.

Spectre

Legacy Member
Ik ben dus voor de moment iemand aan het helpen met zijn actionscript maar stoot nu zelf op een dom probleem.

Code:
var verplaatsing:Number = 7;
fotos_mc.onEnterFrame = function() {
	if (Key.isDown(Key.RIGHT)) {
		fotos_mc._x -= verplaatsing;
	}
	if (Key.isDown(Key.LEFT)) {
		fotos_mc._x += verplaatsing;
	}
	if (Key.isDown(Key.UP)) {
		fotos_mc._y += verplaatsing;
	}
	if (Key.isDown(Key.DOWN)) {
		fotos_mc._y -= verplaatsing;
	}
};

bedoeling is dat je in een kleine stage door de movieclip (fotos_mc) kunt navigeren met de pijltjes. Nu is er geen probleem met het navigeren maar ik kan blijven navigeren voorbij die mc en gewoon verder gaan in witte achtergrond. Iemand die een secondje kan zeggen hoe ik zorg dat mijn navigeren stopt aan het einde van mijn movieclip?

Thx

Zero Grav

Legacy Member
Controleren of uw x-waarde niet groter is dan de width van uw clip + of - een bepaalde waarde?

LunchBox

Legacy Member
onEnterFrame is redelijk dirty (lees: onnodig cpu-intensief), je kan beter een KeyListener gebruiken:
Code:
var verplaatsing:Number = 7;

var myListener:Object = new Object();
myListener.onKeyDown = function() {
	switch(Key.getCode()){
		case Key.LEFT:	 fotos_mc._x -= verplaatsing;break;
		case Key.RIGHT:	 fotos_mc._x += verplaatsing;break;
		case Key.UP:	 fotos_mc._y -= verplaatsing;break;
		case Key.DOWN:	 fotos_mc._y += verplaatsing;break;
	}
};
Key.addListener(myListener);


om een regio af te bakenen controleer je alvorens de movieclip te verplaatsen in een if-then-else structuur of je nog wel verder kan, en pas dan ga je het item z'n nieuwe positie toekennen. je kan ook een functie maken die deze controle voor z'n rekening neemt en via een boolean return-waarde beslist of er zal verplaatst worden of niet.

een herwerkt voorbeeld hiervan gaat als volgt:
Code:
var verplaatsing:Number = 5;

var myListener:Object = new Object();
myListener.onKeyDown = function() {
	switch(Key.getCode()){
		case Key.LEFT:	 if(VerplaatsenMogelijk(fotos_mc,"left")){fotos_mc._x -= verplaatsing};break;
		case Key.RIGHT:	 if(VerplaatsenMogelijk(fotos_mc,"right")){fotos_mc._x += verplaatsing};break;
		case Key.UP:	 if(VerplaatsenMogelijk(fotos_mc,"up")){fotos_mc._y -= verplaatsing};break;
		case Key.DOWN:	 if(VerplaatsenMogelijk(fotos_mc,"down")){fotos_mc._y += verplaatsing};break;
	}
};
Key.addListener(myListener);


function VerplaatsenMogelijk(tempMC:MovieClip,direction:String):Boolean{
	var setState:Boolean;
	switch(direction){
		case "left":if(tempMC._x > afbakening_mc._x){setState=true;}else{setState=false;};break;
		case "right":if(tempMC._x < (afbakening_mc._x + afbakening_mc._width)-tempMC._width){setState=true;}else{setState=false;};break;
		case "up":if(tempMC._y > afbakening_mc._y){setState=true;}else{setState=false;};break;
		case "down":if(tempMC._y < (afbakening_mc._y + afbakening_mc._height)-tempMC._height){setState=true;}else{setState=false;};break;
	}
	return setState;
}

kheb hier ook een voorbeeldje van online gesmeten: http://www.showme.be/madefor/9lives/kaderAfbakenen.zip

iamdesign

Legacy Member
LunchBox zei:
onEnterFrame is redelijk dirty (lees: onnodig cpu-intensief), je kan beter een KeyListener gebruiken:
Code:
var verplaatsing:Number = 7;

var myListener:Object = new Object();
myListener.onKeyDown = function() {
	switch(Key.getCode()){
		case Key.LEFT:	 fotos_mc._x -= verplaatsing;break;
		case Key.RIGHT:	 fotos_mc._x += verplaatsing;break;
		case Key.UP:	 fotos_mc._y -= verplaatsing;break;
		case Key.DOWN:	 fotos_mc._y += verplaatsing;break;
	}
};
Key.addListener(myListener);


om een regio af te bakenen controleer je alvorens de movieclip te verplaatsen in een if-then-else structuur of je nog wel verder kan, en pas dan ga je het item z'n nieuwe positie toekennen. je kan ook een functie maken die deze controle voor z'n rekening neemt en via een boolean return-waarde beslist of er zal verplaatst worden of niet.

een herwerkt voorbeeld hiervan gaat als volgt:
Code:
var verplaatsing:Number = 5;

var myListener:Object = new Object();
myListener.onKeyDown = function() {
	switch(Key.getCode()){
		case Key.LEFT:	 if(VerplaatsenMogelijk(fotos_mc,"left")){fotos_mc._x -= verplaatsing};break;
		case Key.RIGHT:	 if(VerplaatsenMogelijk(fotos_mc,"right")){fotos_mc._x += verplaatsing};break;
		case Key.UP:	 if(VerplaatsenMogelijk(fotos_mc,"up")){fotos_mc._y -= verplaatsing};break;
		case Key.DOWN:	 if(VerplaatsenMogelijk(fotos_mc,"down")){fotos_mc._y += verplaatsing};break;
	}
};
Key.addListener(myListener);


function VerplaatsenMogelijk(tempMC:MovieClip,direction:String):Boolean{
	var setState:Boolean;
	switch(direction){
		case "left":if(tempMC._x > afbakening_mc._x){setState=true;}else{setState=false;};break;
		case "right":if(tempMC._x < (afbakening_mc._x + afbakening_mc._width)-tempMC._width){setState=true;}else{setState=false;};break;
		case "up":if(tempMC._y > afbakening_mc._y){setState=true;}else{setState=false;};break;
		case "down":if(tempMC._y < (afbakening_mc._y + afbakening_mc._height)-tempMC._height){setState=true;}else{setState=false;};break;
	}
	return setState;
}

kheb hier ook een voorbeeldje van online gesmeten: http://www.showme.be/madefor/9lives/kaderAfbakenen.zip

normaal geef ik zo'n antwoorde :p
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