最近私はアクションスクリプトを手に入れました。私は自分自身を単純な弓と矢のゲームにすることにしました。これまで私は矢印を弓状に飛ばせました。だから次は私の弓を作って、実際に弦を引っ張ることができる。弓を引っ張る[Flash as3]
これまでのところ私は弓をMCとして描き、文字列を描くためにグラフィックを使用すると考えました。 私は実際にストリングを引っ張るべき場所にいるので、ここから進める方法が分かりません。どんなアドバイスも非常に感謝しています。
可能であれば、自分でコードを作成したいポインタを私に与えてください。私は完成した結果を求めていません。
コード:両方の答えは私を助け
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?
}
}
}
更新
ThxをvvMINOvv & Slomojo、! 私は現在、2本の線を持っています。これは、弓が引き戻されたときに描くグラフィックです。
誰が私はそれをやったかを確認したい場合は、相続人ラフスニップ:この段階で
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、私は明確に行きます。私はそれが私の問題を解決するだろうと思う:) – Michael