Hit-Test Berührung zweiter MovieClips [Flash 10]
| Beiträge: 478 Registriert: Aug 2007
| 08.09.2011, 21:46
Also, ich erstelle mit folgendem AS "fallende Tropfen" in recht großem Abstand. Wie könnte ich in das AS einen Hit-Test integrieren der bei Berührung eines generierten Tropfens (drop) mit dem auf MovieClip(root) befindlichen MC test_mc ein Trace ausgibt.
Habs so versucht, funktioniert aber nicht.
ActionScript:1 2 3 4 | if (MovieClip(root).test_mc.hitTestObject(drop[i]))
{
trace("getroffen");
}
|
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | package Classes
{
import flash.display.MovieClip;
import flash.events.Event;
public class Rain extends MovieClip
{
private var offset:int = 50;
private var dropsNumber:int;
private var dropsVector:Vector.<MovieClip> = new Vector.<MovieClip>();
public function init(drops:int, fallSpeed:int, windSpeed:int, hArea:int, vArea:int, dir:String):void
{
dropsNumber = drops;
if (dir == "right")
{
offset *= -1;
}
for (var i:int = 0; i < drops; i++)
{
var drop:Drop = new Drop();
drop.fallSpeed = fallSpeed;
drop.windSpeed = windSpeed;
drop.dir = dir;
drop.hArea = hArea;
drop.vArea = vArea;
drop.x = Math.random() * (hArea + offset);
drop.y = Math.random() * vArea;
//
drop.scaleX = Math.round(((Math.random() * 1) + 0.3) * 40) / 40;
drop.scaleY = drop.scaleX;
//
dropsVector.push(drop);
addChild(drop);
}
inTheDirection();
}
private function inTheDirection():void
{
for (var i:int = 0; i < dropsNumber; i++)
{
switch (dropsVector[i].dir)
{
case "left" :
dropsVector[i].addEventListener(Event.ENTER_FRAME, moveLeft);
break;
case "right" :
dropsVector[i].scaleX *= -1;
dropsVector[i].addEventListener(Event.ENTER_FRAME, moveRight);
break;
default :
trace("Fehler aufgetreten");
}
}
}
private function moveLeft(e:Event):void
{
e.target.x -= e.target.windSpeed;
e.target.y += Math.random() * e.target.fallSpeed;
if (e.target.y > e.target.vArea + e.target.height)
{
e.target.x = Math.random() * (e.target.hArea + (offset * 2));
e.target.y = - e.target.height;
}
}
private function moveRight(e:Event):void
{
e.target.x += e.target.windSpeed;
e.target.y += Math.random() * e.target.fallSpeed;
if (e.target.y > e.target.vArea + e.target.height)
{
e.target.x = Math.random() * (e.target.hArea - offset * 2) + offset * 2;//Check
e.target.y = - e.target.height;
}
}
}
}
|
| | | Beiträge: 478 Registriert: Aug 2007
Themenautor/in
| 08.09.2011, 23:03
Habs jetzt so versucht. Leider auch ohne Erfolg. Wo und wie müsste ich diesen Hit-Test in meinen bestehenden Code einfügen?
Bin euch wirklich sehr dankbar!
ActionScript:1 2 3 4 5 6 7 8 9 10 | //HITTEST START
MovieClip(root).test_mc.addEventListener(Event.ENTER_FRAME, enter_frame);
function enter_frame(event:Event):void
{
if (MovieClip(root).test_mc.hitTestObject(dropsVector0))
{
trace("berührt");
}
}
//HITTEST ENDE
|
| | | Beiträge: 447 Registriert: Mar 2008
| 10.09.2011, 20:19
|
|