1. #1

    Registered
    06/11/06
    Location
    Evergem
    Posts
    9,882
    iTrader
    97 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/53

    Stom actionscript probleem

    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
    no votes  

  2. #2
    Zero Grav's Avatar
    Registered
    06/06/04
    Location
    Bilzen
    Posts
    8,805
    iTrader
    18 (100%)
    Mentioned
    0 Post(s)
    Reputation
    42/128
    Controleren of uw x-waarde niet groter is dan de width van uw clip + of - een bepaalde waarde?
    no votes  

  3. #3
    Bigbuddha's Avatar
    Registered
    18/12/03
    Location
    Hasselt
    Posts
    1,758
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/5
    misschien is dit wel interessant voor jouw.

    tutorial Flash objecten laten bewegen via je keyboard
    Life before the computer: memory was something that you lost with age, a cursor used profanity and if you had a 3 1/2 inch floppy you just hoped nobody found out...
    no votes  

  4. #4
    LunchBox's Avatar
    Registered
    18/07/02
    Location
    Deurne
    Posts
    3,854
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    14/14
    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
    Last edited by LunchBox; 15-11-2008 at 02:45.
    no votes  

  5. #5
    iamdesign's Avatar
    Registered
    05/04/06
    Location
    Roeselare
    Posts
    177
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by LunchBox View Post
    This quote is hidden because you are ignoring this member. Show
    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

    Laptop: Sony Vaio FE11 -:- 160gig -:- nVidia 7400 256MB -:- Duo Centrino @ 1.8Ghz

    Laptop: MB Pro 15" -:- 160gig -:- NVIDIA GeForce 8600M GT -:- 2.4Ghz
    no votes  

  6. #6
    LunchBox's Avatar
    Registered
    18/07/02
    Location
    Deurne
    Posts
    3,854
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    14/14
    gij hebt dan ook me koffie gesmost, dus ge had wah delay
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in