Ich habe in letzter Zeit ein paar Action-Scripts in die Hand genommen und mich dazu entschlossen, ein einfaches Pfeil-und-Bogen-Spiel zu machen. Bisher habe ich den Pfeil bogenförmig fliegen lassen. Als nächstes mache ich meinen Bogen und bin in der Lage, tatsächlich die Saite zu ziehen.Eine Bogensehne ziehen [Flash as3]
Bis jetzt dachte ich, ich würde den Bogen als MC zeichnen und eine Grafik verwenden, um die Zeichenfolge zu zeichnen. Ich bin an dem Punkt, an dem ich eigentlich die Saite ziehen sollte und ich habe keine Ahnung, wie ich von hier fortschreiten soll. Jeder Rat würde sehr geschätzt werden.
Wenn möglich, gib mir einfach einen Zeiger, ich möchte das Ding selbst codieren, ich frage nicht nach einem fertigen Ergebnis.
Code:
package {
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Stage;
import flash.events.MouseEvent;
public class bow extends MovieClip {
var myStage:Stage;
var bowString:Shape;
var bowStringMc:MovieClip;
public function bow(stageRef) {
this.myStage = stageRef;
myStage.addChild(this);
this.x = myStage.stageWidth/2;
this.y = myStage.stageHeight/2;
this.drawBowstring();
}
public function drawBowstring() {
bowString = new Shape();
bowStringMc = new MovieClip();
bowStringMc.addChild(bowString);
myStage.addChild(bowStringMc);
bowString.graphics.lineStyle(2, 0x000000);
bowString.graphics.curveTo(-50,this.height/2,0,(this.height-10));
bowStringMc.x = this.x-1;
bowStringMc.y = this.y - this.height/2 + 5;
bowStringMc.addEventListener(MouseEvent.MOUSE_DOWN, pullBowstring);
}
public function pullBowstring(e:MouseEvent) {
// Have to start redrawing the graphic i gess but how?
}
}
}
aktualisieren
Thx vvMINOvv & Slomojo halfen beide Antworten Sie mir! Ich habe zZ 2 Zeilen, die Grafiken sind, die ich neu zeichne, wenn der Bogen zurück gezogen wird.
Wenn jemand anderes sehen will, wie ich es tat, here eine grobe snipped:
public function drawBowstring() {
bowStringTop = new Shape();
bowStringBottom = new Shape();
bowStringMc = new MovieClip();
bowStringMc.addChild(bowStringTop);
bowStringMc.addChild(bowStringBottom);
myStage.addChild(bowStringMc);
bowStringTop.graphics.lineStyle(2, 0x000000);
bowStringTop.graphics.moveTo(0, 0);
bowStringTop.graphics.lineTo(0, this.height/2);
bowStringBottom.graphics.lineStyle(2, 0x000000);
bowStringBottom.graphics.moveTo(0, this.height-10);
bowStringBottom.graphics.lineTo(0, this.height/2);
bowStringMc.x = this.x-1;
bowStringMc.y = this.y - this.height/2 + 5;
this.hand.addEventListener(MouseEvent.MOUSE_DOWN, pullBowstring);
}
public function pullBowstring(e:MouseEvent) {
myStage.addEventListener(MouseEvent.MOUSE_MOVE, reDrawBowstring);
myStage.addEventListener(MouseEvent.MOUSE_UP, releaseBowstring);
}
public function releaseBowstring(e:MouseEvent) {
myStage.removeEventListener(MouseEvent.MOUSE_MOVE, reDrawBowstring);
myStage.removeEventListener(MouseEvent.MOUSE_UP, releaseBowstring);
}
public function reDrawBowstring(e:MouseEvent) {
if (this.hand.x < -18 || this.hand.x > 0) {
this.releaseBowstring(e);
}
this.hand.x = mouseX;
this.arrow.x = mouseX;
bowStringTop.graphics.clear();
bowStringBottom.graphics.clear();
bowStringTop.graphics.lineStyle(2, 0x000000);
bowStringTop.graphics.moveTo(0, 0);
bowStringTop.graphics.lineTo(this.hand.x, (this.height/2)-5);
bowStringBottom.graphics.lineStyle(2, 0x000000);
bowStringBottom.graphics.moveTo(0, this.height-10);
bowStringBottom.graphics.lineTo(this.hand.x, (this.height/2)-5);
}
Thx, ich werde es versuchen. Ich denke das würde mein Problem lösen :) – Michael