{lang: 'de'}
Flashhilfe.de - Flash Community

Shapes in Array mit dynamischen Bezeichner ansprechen [Flash 10]

 


AntwortenRegistrieren Seite1  

nochsoeinnoob#1
Benutzerbild von nochsoeinnoob
Beiträge: 1
Wohnort: EF
Registriert: Mar 2015

21.03.2015, 16:39

Hey,

vorweg: Ich habe lange selbst mit dem Problem gehadert bis ich mich dazu entschlossen habe, euch damit zu belästigen. Falls dieses Problem an einer anderen Stelle behandelt wurde, freue mich auch darüber mich dahin zu verweisen. Hier braucht niemand für mich einen Code zu schreiben. Ich denke es wird sich um einen Klassiker handeln....


Mein Vorhaben: Ich habe eine Textdatei mit gesammelten Koordinatenpunkten (schlicht x und y Werte die durch Semikoleons getrennt werden.

Mein AS3 Code liest diese aus und spreichert sie in einem Array.

Ein Shape Objekt zeichnet diese Koordinaten nach, so dass ein Pfad entsteht.

(Immer wenn man die rechte Pfeiltaste drückt) (Liest er immer den 30. Array raus, da die Koordinatenpunkte 120 Mal die Sekunde aufgenommen wurden und so ist es dann halt nur jede viertel Sekunde)

Das klappt auch bisher. Also werden zwischen Vier Koordinaten Punkten (x1,y1 und y2, y2) mit der lineTo  Methode Linien erstellt. (Es sind natürlich ein paar tausend Koordinatenpunkte)

Ich möchte nun erreichen, dass bei gedrückter linker Pfeiltaste die letzte Linie wieder entfernt wird (quasi wie ein zurückspulen)

Ich habe schon for schleifen probiert die dann ein komplett neues Shape erstellen bis zum letzten Koordinatenpunkt (und dann bei linker Pfeiltaste verringert um 1)

Ich denke aber dass Shapes die in einem Array gespeichert werden, und dann einzeln angesprochen werden am effektivste wären?

Ich bekomme aber einfach nicht hin, die einzelnen Shapes anzusprechen. Mein aktueller Code ist gerade etwas zerfleddert aber vielleicht könnt ihr erahnen wie es werden soll..

ich schaffe es nur dass komplette Shape objekt mit removeChild zu entfernen aber nicht bsw. removeChild (shape20) wobei dann shape 20 das letzte Objekt wäre.

Ich habe mal vor Jahren etwas AS2 Erfahrung gesammelt und starte jetzt wieder mit AS3. Entschuldigt also bitte bitte meinen Dilettantismus und wenn ich gegen die Code Konventionen verstoße! Es muss sich bestimmt unglaublich verwirrend anhören.


Ich mache das ganze neben meiner Masterarbeit um unabhängig von einer Auswertungssoftware zu sein, die diese Koordinatenpunkte aufgezeichnet hat!




Beste Grüße und für jeden Verweis auf ein Tutorial, wie man es anders lösen könnte etc. bin ich dankbar.



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
101
102
103
104
105
106
107
108
109
110
111
var myTextLoader:URLLoader = new URLLoader();


var myShape:Shape= new Shape();
var myShapeb:Shape= new Shape();
var linie:Shape=new Shape();

var links:Boolean=false;
var rechts:Boolean=false;




var positionx:int;
var positiony:int;

var positionxb:int;
var positionyb:int;

var xpos:int=0;
var ypos:int=1;
var xposb:int=0;
var yposb:int=1;


stage.addEventListener(KeyboardEvent.KEY_DOWN, gedrueckt);


linie.graphics.lineStyle(10, 0x009900, .50);
linie.graphics.moveTo(0,0);


myShape.graphics.lineStyle(10, 0x000099, .50);
myShape.graphics.moveTo(0,0);

myShapeb.graphics.lineStyle(10, 0x990000, .50);
myShapeb.graphics.moveTo(0,0);





function gedrueckt(ereignis:KeyboardEvent):void {
 
 
     var myArrayOfLinesx:Array=myTextLoader.data.split(";");
     var myArrayOfLinesy:Array=myTextLoader.data.split(";");
 
     var shapeArray:Vector.<Shape> = new Vector.<Shape>();
 
        if (ereignis.keyCode==Keyboard.LEFT) {
 
 
        links=true;
 
 
        xposb=xposb+30;
        yposb=yposb+30;
 
 
 
 
        positionxb = ( myArrayOfLinesx[xposb])*0.857;
        positionyb = ( myArrayOfLinesy[yposb])*0.857;
 
 
        shapeArray.pop();
 
 
  //* Hier sollte dann pro Tastendruck die letzten Array Elemente entfernt werden. Bei Tastendruck auf die rechte Pfeiltaste soll an der Stelle dann wieder angesetzt werden

     }
 
 
     if (ereignis.keyCode==Keyboard.RIGHT) {
        rechts=true;
 
        xpos=xpos+30;
        ypos=ypos+30;
 
 
 
 
        positionx = ( myArrayOfLinesx[xpos])*0.857;
        positiony = ( myArrayOfLinesy[ypos])*0.857;
 
 
 
        linie.graphics.lineTo(positionx,positiony);
 
        addChild(linie);
 
        shapeArray.push( linie );
        
 
 
 
 
     }
 
 
 
 
 
 
}


myTextLoader.load(new URLRequest("myText.txt"));





Das war mein Versuch mit zwei for Schleifen. Also sobald die linke Pfeiltaste gedrückt wird, löscht er das Shape Element was Erstellt wurde wenn man die rechte Pfeiltaste drückt. Da habe ich aber scheinbar einen Denkfehler drin, da der die Objekte nicht ordentlich entfernt.



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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
var myTextLoader:URLLoader = new URLLoader();
var myShape:Shape= new Shape();
var myShapeb:Shape= new Shape();
var i:uint = 0;
var k:uint = 0;
var j:uint = 0;

var links:Boolean = false;
var rechts:Boolean = false;

var punkte:int =1;
this.addChild (myShapeb);

var anzahl:int;
var positionx:int;
var positiony:int;

var positionxb:int;
var positionyb:int;
var xpos:int=0;
var ypos:int=1;
var xposb:int=0;
var yposb:int=1;
stage.addEventListener(KeyboardEvent.KEY_DOWN, gedrueckt);
stage.addEventListener(KeyboardEvent.KEY_UP, losgelassen);


myShape.graphics.lineStyle(10, 0x000099, .50);
myShape.graphics.moveTo(0,0);

myShapeb.graphics.lineStyle(10, 0x990000, .50);
myShapeb.graphics.moveTo(0,0);




   
function gedrueckt(ereignis:KeyboardEvent):void {
     trace (k);
  var myArrayOfLinesx:Array = myTextLoader.data.split(";");
  var myArrayOfLinesy:Array = myTextLoader.data.split(";"); 
 
 
     if (ereignis.keyCode == Keyboard.LEFT) {
        links = true;
     
     this.removeChild (myShape);
     
     
  xpos =0;
  ypos =1;
     
      k = k-1;
      i = 0;
     
      for (j = 0; j < k; j++)
      
      {
        
     xposb = xposb+30;
     yposb=  yposb+30;
        
        
        
        
      positionxb = ( myArrayOfLinesx[xposb])*0.857;
      positionyb = ( myArrayOfLinesy[yposb])*0.857;
 
 
 
 
  myShapeb.graphics.lineTo(positionxb,positionyb);
  this.addChild (myShapeb);
 
 
        
     
     }
 
    }
     
     
     if (ereignis.keyCode == Keyboard.RIGHT) {
        rechts = true;
        
  xposb =0;
  yposb =1;
        
        j = 0;
        k = k+1;
        
        for (i = 0; i < k; i++)
      
      {
        
     xpos = xpos+30;
     ypos=  ypos+30;
        
        
        
        
      positionx = ( myArrayOfLinesx[xpos])*0.857;
      positiony = ( myArrayOfLinesy[ypos])*0.857;
 
 
 
 
  myShape.graphics.lineTo(positionx,positiony);
  this.addChild (myShape);
  this.removeChild (myShapeb); 
        
 
 
    }
     
     
  }
 
}

function losgelassen(ereignis:KeyboardEvent):void {
     if (ereignis.keyCode == Keyboard.LEFT) {
        links = false;
   
 
   
   
    }
     
     
     if (ereignis.keyCode == Keyboard.RIGHT) {
        rechts = false;
 
 
   
     }
 
 
}

   
myTextLoader.load(new URLRequest("myText.txt"));
Geändert von nochsoeinnoob am 21.03.15 um 17:01 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de