Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-10-2003, 18:54   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
var abfrage

hallo,
habe 2 Probleme die ich net lösen kann.

ich versuch ne Kollisionsabfrage ducrhzuführen
wenn sich 2 Teile (A+B) berühren.

nun ist ein Teil (A) via "drag" herumziehbar

der 2te Teil aber, wird zufallsgeneriert an einer Position am Screen ausgegeben.
und es gibt insgesamt 8 Stück davon. Von den 8 Stück werden 4 eben noch dazu zufallsgeneriert am Screen plaziert.

So nun die Frage, wie kann ich im MC "Teil A" sagen: wenn du einen von TeilB berühst geh auf seine Position (eben von teil B) und sag mir auch noch welchen der 8 Teile von B hast du gerade berührt.

ActionScript:
  1. if (KOLLa.hitTest(_global.KOLL3)) {
  2. _root.controll_A += 5
  3.         this._x = _global.aX;
  4.  this._y = _global.aY;
  5. } else {
  6. _root.controll_B += 5
  7. }
  8. }

das script liegt auf Teil A, also der, der herumgezogen wird.
das script funktioniert irgendwie net.
flatripe ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:00   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
also nen billigen hitTest zwischen a und b kannste hier nicht machen
flash zieht um b ne bounding box, also nen rechteck welches alle teile enthält.
somit testest du im endeffekt nur ob teil A diese große stück B trifft.
du musst deien logik ein bißchen freier aufbauen.

wie wärs wenn du diesen 8 teilen je einen instanznamen zu vergeben.

jetz kannste ne abfrage mit hitTest erstellen die alle 8 teile mit dem teil A testet.
bei nem hit weißte genau
teilb1 oder teilb2...usw isses

grüße
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:07   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
ja das habe ich auch gemacht, in allen dieser MCs (in TeilB) liegt auch ein extra filmchen mit nem eigenen Instanznahmen (zwecks Kollision).

aber wie kann ich die hittestabfrage in TeilA formulieren, das er eben alle diese 8 Stück abfrägt, ohne alle möglichen variationan auszuscripten.

ActionScript:
  1. if ((KOLL1.hitTest(_root.xyz0.KOLL1))||(this.hitTest(_root.xyz1.KOLL1))||(this.hitTest(_root.xyz2.KOLL1))||(this.hitTest(_root.xyz3.KOLL1))) {
das funktioniert wohl,

aber ich hab eben 8 Mcs (Teil B), und natürlich auch 8 mal TeilA...
flatripe ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:09   #4 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
mit hilfe von _droptarget sollte das kein Problem sein geht das:


ActionScript:
  1. //this ist jetzt teil#A
  2. //un deine b teile haben instanznamen teil1B teil2B ...
  3. this.target = this._droptarget;
  4. if (substr(this.target.length,1) ==  "B") {
  5. this._x = eval(this.target) ._x;
  6. this._y = eval(this.target)._y;
  7. trace(this.target);
  8. }
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:21   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
alle frägste per schleife ab
ActionScript:
  1. for(var i=0;i<anzahl;i++){
  2. if(this.hitTest(_parent.teilb["teil"+i])){
  3. trace("hit mit teil"+i)
  4. }
  5. }
sowas zB auf teiLA hinterlegen, in nem enterframe etc
und instanznamen beachten/anpassen

(_parent.teilb["teil"+i])
wird aufgelößt zum pfad
_parent.teilb.teil0
_parent.teilb.teil1 usw

droptarget sollte auch gehen, stammt noch aus flash4/5 zeiten
hat bei mir aber nie gut funktioniert

grüße
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:23   #6 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
oder mal mit 'nem Array() arbeiten

teilA.onLoad = function() {
teile = [];
for (var i = 0; i<=3; i++) {
teile[i] = _root["teil" add i];
teile[i].posx = teile[i]._x;
teile[i].posy = teile[i]._y;
}
teilA.startDrag(true);
};
teilA.onEnterFrame = function() {
for (var i = 0; i<=teile.length-1; i++) {
if (teile[i].hitTest(teilA)) {
stopDrag();
teilA._x = teile[i].posx;
teilA._y = teile[i].posy;
}
}
};

gruß
jeypack
jeypack ist offline   Mit Zitat antworten
Alt 05-10-2003, 19:33   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 175
caramba, danke erstmal, bis ich all die Lösungsansätze durch ab, dauert es sicher noch ne wal.

im notfall melde ich mcich wieder.
flatripe ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele