Archief - FLASH: Na hittest _x naar juiste vrije coordinaat zenden

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.

iamdesign

Legacy Member
Hoy iedereen,

hier nog een vraagje ivm actionscript:

ik haal uit een array (dank je voor de tip Lunchbox ^^) x-aantal movieclips die ik random over het scherm laat bewegen.

Nu zou het leuk zijn moesten die boxjes als ze tegen elkaar knallen ook een andere richting zouden kiezen ipv elkaar gewoon te overlappen => dus ik gebruik de hittest van AS.

Nu stelt het probleem zich dat er idd wordt gecontroleerd als ze zich elkaar raken, maar als ik ze een nieuwe coordinaat toewijs (weer random) dan geraken ze precies in elkaar "verstrengeld" :-/

dus gedaan leuk effect :(

dit is de code:

Code:
var arrNamen:Array = new Array;
arrNamen[0] = "nul";
arrNamen[1] = "een";


for(var i:Number = 0; i < arrNamen.length; i++)
{
	this["blok"+i] = this.attachMovie("mov_aboutSnipper", "blok"+i, i);
	
	this["blok"+i].txtfield.text = arrNamen[i];
	
	this["blok"+i]._x = Math.random()*400 + 20;
	this["blok"+i]._y = Math.random()*100 + 20;
	this["blok"+i].dx = Math.round(Math.random()*400);
	this["blok"+i].dy = Math.round(Math.random()*100);
	
	this["blok"+i].onEnterFrame = moveIt	
}

function moveIt()
{
	this._x += (this.dx-this._x)/100;
	this._y += (this.dy-this._y)/100;	
	
	
	if(blok0.hitTest(blok1))
	{		
        this.dx = Math.round(Math.random()*400);
		this.dy = Math.round(Math.random()*100);	
    }
	
	else
	{
		if(Math.round(this._x) <= this.dx + 5 and Math.round(this._y) <= this.dy + 5) 
		{		
			this.dx = Math.round(Math.random()*400);
			this.dy = Math.round(Math.random()*100);		
		}
	}
	
	
}

Is het trouwens mogelijk om die hittest zo te schrijven dat elk movieclip wordt gecontroleerd, want stel dat ik nu 25 MC's aanmaak...dan moet ik toch geen 25x die hittest controlleren?

alvast bedankt :)

een voorbeeld van het probleem kan je hier vinden: http://iamdesign.be/flashfocus/random.html


en hier een screenshot moesten de boxjes maar niet wille botsen tegen elkaar :p
http://iamdesign.be/flashfocus/verstrengel.gif

Breen

Legacy Member
Bij het botsen wil je niet dat ze een random beweging gaan maken, je wil dat ze beide in de tegenovergestelde richting gaan bewegen van daarvoor. --> als de beweging _x = +10 moet dat dan nu -10 worden.

iamdesign

Legacy Member
erg goed gezien...pfff ik heb dringend bijles nodig over Maths in Flash :D

bedankt alvast, nu eerst snel weer naar mijn vakantiejob en ondertusse al in gedachte het wa gaan uitwerke :d

LunchBox

Legacy Member
oh en in de hoop dat je geen ellenlange check gaat schrijven daarvoor, gewoon een variabele direction*=-1 doen om zijn richting horizontaal te veranderen, en die gebruiken in uw vlak_mc._x+=direction statement.

something like this:
Code:
var direction:Number=10;
this.onEnterFrame=function(){
	moving_mc._x+=direction;
}
btn_mc.onPress=function(){
	direction*=-1;
}
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