Ik ben net begonnen met leren programmeren (in AS3, moet van school).
Nu wilde ik een bal spelletje maken, waarbij de ballen tegen de wanden aan kaatsen.
Nu valt hier heel erg veel over te vinden op internet, allemaal verschillende manieren om dit te doen. Alleen om een onduidelijke reden (onduidelijk voor mij) lukt dit niet.
Ik heb verschillende sites geraadpleegd, heb zelf een boek (ActionScript 3.0 Animation: Making Things Move!)
Maar zelfs daarmee lukt het mij niet.
Zou iemand mij kunnen uitleggen wat ik fout doe? (en liever nog; waarom het fout is)
Dit is mijn main.as
En dit mijn Bal.as
Edit:
Als ik dat laatste deel uit die code verwijder doet die het wel gewoon. Dit stuk dus dus weghalen:
Dan komen de ballen op een random plek, willekeurige kleur en willekeurige richting.
Maar met dat deel wilde ik juist ervoor zorgen dat de ballen tegen de wand aan kaatsen.
Nu wilde ik een bal spelletje maken, waarbij de ballen tegen de wanden aan kaatsen.
Nu valt hier heel erg veel over te vinden op internet, allemaal verschillende manieren om dit te doen. Alleen om een onduidelijke reden (onduidelijk voor mij) lukt dit niet.
Ik heb verschillende sites geraadpleegd, heb zelf een boek (ActionScript 3.0 Animation: Making Things Move!)
Maar zelfs daarmee lukt het mij niet.
Zou iemand mij kunnen uitleggen wat ik fout doe? (en liever nog; waarom het fout is)
Dit is mijn main.as
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| package { import flash.display.MovieClip; public class Main extends MovieClip { private var aantalBallen:int = 100; private var mijnBal:Bal; public function Main() { for (var i:int = 1; i <= aantalBallen; i++) { mijnBal = new Bal (); addChild(mijnBal); } } } } |
En dit mijn Bal.as
code:
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
| package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event; import flash.display.StageAlign; public class Bal extends Sprite { public var balSprite:Sprite; private var angle:Number = (Math.random()*360); private var speed:Number = 3; private var radius:Number = 10; public function Bal() { addEventListener(Event.ADDED_TO_STAGE, handlerAdded); } private function handlerAdded(evt:Event):void { stage.align = StageAlign.TOP_LEFT; balSprite = new Sprite(); balSprite.graphics.beginFill((Math.random()*0xffffff), 0.5); balSprite.graphics.drawCircle((Math.random()*stage.stageWidth), (Math.random()*stage.stageWidth), radius); balSprite.graphics.endFill(); addChild(balSprite); addEventListener(Event.ENTER_FRAME, moveOnStage); } private function moveOnStage(evt:Event):void { var radians:Number = angle*Math.PI / 2; var vx:Number = Math.cos(angle) * speed; var vy:Number = Math.sin(angle) * speed; balSprite.x += vx; balSprite.y += vy; if ( balSprite.x >= stage.stageWidth - 10 ) { balSprite.x = stage.stageWidth - 10; speed *= -1; } else if ( this.x <= 10 ) { balSprite.x = 10; speed *= -1; } if ( balSprite.y >= stage.stageHeight - 10 ) { balSprite.y = stage.stageHeight - 10; speed *= -1; } else if ( this.y <= 10 ) { balSprite.y = 10; speed *= -1; } } } } |
Edit:
Als ik dat laatste deel uit die code verwijder doet die het wel gewoon. Dit stuk dus dus weghalen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| if ( balSprite.x >= stage.stageWidth - 10 ) { balSprite.x = stage.stageWidth - 10; speed *= -1; } else if ( this.x <= 10 ) { balSprite.x = 10; speed *= -1; } if ( balSprite.y >= stage.stageHeight - 10 ) { balSprite.y = stage.stageHeight - 10; speed *= -1; } else if ( this.y <= 10 ) { balSprite.y = 10; speed *= -1; } |
Dan komen de ballen op een random plek, willekeurige kleur en willekeurige richting.
Maar met dat deel wilde ik juist ervoor zorgen dat de ballen tegen de wand aan kaatsen.
[ Voor 15% gewijzigd door Hedva op 05-12-2011 10:35 ]