Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-04-2004, 01:22   #1 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
targetfelder auswerten

hi,

ich habe der mc´s (chip_1, chip_2, chip_3), die auf drei target-felder verteilte werden sollen.
die chips haben unterschiedlichen längen (100, 130, 165). wenn jetzt die chips auf die felder gezogen
worden sind, soll eine auswertung gemacht werden (buttonklick), ob sie auch alle richig verteilt wurden.
entsprechend erscheint dann ein grüner rand bzw. ein roter um die felder.
der rote rand soll sich nun in der länge skalieren, abhängig welcher von den chip´s auf dem
targetfeld liegt.
leider wird die variable (_global["laenge_"+this]) für den roten rand immer nur einmal gesetzt und übernimmt diese skalierung
dann für "alle" roten ränder.



Erklärung zum script: hier wird dem target-feld mitgeit wie lange der chip ist
*chip_1 ---> 100: _global["laenge_"+this] = "1";
*chip_2 ---> 130: _global["laenge_"+this] = "2";
*chip_3 ---> 165: _global["laenge_"+this] = "3";




chip_2:
---------
on (release) {
stopDrag();
//-->Anfang

//Abfrage wenn ein hitTest mit einem target-Feld stattfindet
for (i = 1; i <=10; i++) {
if (this.hitTest(_root["target_"+i].magnet)) {
_global["laenge_"+this] = "2";//*siehe Erklärung zum script
_x = _parent["target_"+i]._x;
_y = _parent["target_"+i]._y;
this.grau._visible = 1;
break;
}
}//Ende for-Schleife



target-feld:
------------
onClipEvent (enterFrame) {

if (this.hitTest(_root.chip_2)){
_root.gruen_2._visible = 1;
}else {

for (i=1; i<=3; i++){
if (_global["laenge_"+i] == "1"){
_root.rot_2._xscale = 100;

}else if (_global["laenge_"+i] == "2"){
_root.rot_2._xscale= 130;

}else if (_global["laenge_"+i] == "3"){
_root.rot_2._xscale= 165;

}else {
_root.rot_2._xscale= 165;

}
}
_root.rot_2._visible = 1;
//trace ("target_2: "+_global["laenge_"+i]);
}

}


gruss sven
xlive ist offline   Mit Zitat antworten
Alt 19-04-2004, 11:15   #2 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
hi,

habe mal zum besseren verständnis einen kleinen dummy gebastelt.
lego.zip liegt unter:
http://www.castra.de/download.htm

gruss sven
xlive ist offline   Mit Zitat antworten
Alt 20-04-2004, 14:42   #3 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
hi,

bin die ganze sache mal angegangen und habe eigentlich "fast" alles gelöst.
leider habe ich jetzt zum schluss noch ein fehler. wenn der user versucht ein feld doppelt zu besetzen, kommt eine fehlermeldung und der chip wird an seine ausgangsposition gesetzt. das klappt. wenn aber nun, diese ausganspos. ein targetfeld war, wird der chip zwar darauf gesetzt, aber,
nach einem button-weiter-klick, wird der rote rand nicht mehr abhängig von dem chip skaliert dafür aber das targetfeld mit der hittest stattfand.

habe mal zwei verisonen gebastelt.
bei lego_dummy_xx habe ich besetzt = 1 zugewiesen. das haut aber gar nicht hin....?
lego.zip liegt unter:
http://www.castra.de/download.htm

gruss sven
xlive ist offline   Mit Zitat antworten
Alt 20-04-2004, 15:29   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Speichere doch einfach in einer Variable auf den Targets das richtige element (target.rightElement) und vergleiche es mit dem das drauf liegt (target.occupiedBy).

in etwa so
ActionScript:
  1. target1.rightElement = clip1;
  2. if(target1.occupiedBy== target1.rightElement){
  3. trace("RICHTIG");
  4. }

lg tf
TigerFox ist offline   Mit Zitat antworten
Alt 20-04-2004, 21:39   #5 (permalink)
FBx
 
Benutzerbild von xlive
 
Registriert seit: May 2003
Beiträge: 968
hi,

denke habe nun eine halbwegs akzeptable lösung gefunden. danke nochmals an nemo für die sinnvolle idee, nicht wie in meiner ersten version die targets, sondern die chips zu high-lighten (rot-/grün).
die nun funztende aktuelle lego.zip liegt unter:
http://www.castra.de/download.htm

noch eine frage am rande. auf meinem auswerten-button liegt folgendes script:
wie kann ich dieses lange elend "kürzer" schreiben?

on (release) {

if (_global.pos_1 != 1){
_root.chip_1.rot._visible = 1;
}

if (_global.pos_2 != 1){
_root.chip_2.rot._visible = 1;
}

if (_global.pos_3 != 1){
_root.chip_3.rot._visible = 1;
}

if (_global.pos_4 != 1){
_root.chip_4.rot._visible = 1;
}

if (_global.pos_5 != 1){
_root.chip_5.rot._visible = 1;
}

if (_global.pos_6 != 1){
_root.chip_6.rot._visible = 1;
}

gotoAndStop(2);

}


gruss sven
xlive ist offline   Mit Zitat antworten
Alt 21-04-2004, 11:52   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Das kannst du so zusammenfassen;
ActionScript:
  1. on (release) {
  2. var anzahl=6;
  3. for(var i=1;i<=anzahl;i++){
  4. if (_global["pos_"+i] != 1){
  5. _root["chip_"+i].rot._visible = 1;
  6. }
  7. }

success TF
TigerFox 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 09:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele