[noot: ik heb to nog toe alle Flash topics op GoT genegeerd en de search/google leverden niets op, dus ik ga er vanuit dat dit een originele vraag is ;)]
Ik ben gisteren begonnen met Flash, en ben best enthousiast over Actionscript 2.0. Nu zit ik alleen met het volgende probleem. Ik heb ergens gelezen hoe je classes extend van MovieClip en hoe je die moet instantieren. Nou dat werkt allemaal goed, maar nou zit ik met het volgende. Ik heb een class A die een MovieClip is, en een class B die ook MovieClip is. A is een container voor 10 B's:
(vergeet dat 'java', het is AS2.0
Dit werkt niet vanwege de volgende error:
Logisch, netjes dat AS2.0 er rekening mee houdt. Het is vrij eenvoudig te omzeilen, door "var b:B = ..." te schrijven als "var b = ...". Maar da's niet zo netjes. Is er niet een manier, zoals in C++ en Java, om een class te casten? Dan zou je zoiets krijgen:
Maar dat geeft dus een syntax error...
edit: Aarrgghh, ik wist dat het een overbodige vraag zou gaan worden!!
Class casten in Flash gaat dus zo:
Ik ben gisteren begonnen met Flash, en ben best enthousiast over Actionscript 2.0. Nu zit ik alleen met het volgende probleem. Ik heb ergens gelezen hoe je classes extend van MovieClip en hoe je die moet instantieren. Nou dat werkt allemaal goed, maar nou zit ik met het volgende. Ik heb een class A die een MovieClip is, en een class B die ook MovieClip is. A is een container voor 10 B's:
(vergeet dat 'java', het is AS2.0
Java:
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
| // A.as: class A extends MovieClip { private var bees:Array; function A() { bees = new Array(); } public function init():Void { for(var i:Number = 0; i < 10; i++) { var b:B = attachMovie("B", "b" + i, getNextHighestDepth()); b.init() bees.push(b); } } } // B.as: class B extends MovieClip { function B() { } public function init():Void { } } // frame 0 script: this.attachMovie("A", "a",1); a.init(); |
Dit werkt niet vanwege de volgende error:
code:
1
| A.as: Line 11: Type mismatch in assignment statement: found MovieClip where B is required |
Logisch, netjes dat AS2.0 er rekening mee houdt. Het is vrij eenvoudig te omzeilen, door "var b:B = ..." te schrijven als "var b = ...". Maar da's niet zo netjes. Is er niet een manier, zoals in C++ en Java, om een class te casten? Dan zou je zoiets krijgen:
code:
1
| var b:B = (B)attachMovie("B", "b" + i, getNextHighestDepth()); |
Maar dat geeft dus een syntax error...
edit: Aarrgghh, ik wist dat het een overbodige vraag zou gaan worden!!
Class casten in Flash gaat dus zo:
code:
1
| var b:B = B(attachMovie("B", "b" + i, getNextHighestDepth())); |
[ Voor 10% gewijzigd door Genoil op 08-07-2004 11:39 ]