メイン ActionScript 3.0 特設会議室 塗りつぶしについて | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
jyanpoke7 | Åê¹ÆNo.40238 投稿日時: 2008-9-10 19:19 |
新米 居住地: 投稿: 3
使用環境:
|
塗りつぶしについて 下記のコードで、線とドットが表示されますが
ドットの上をドラッグしてもドットが上に来てしまい 線で塗りつぶしが出来ません。 ドットを塗りつぶすにはどうすればよいのでしょうか よろしくお願いいたします。 var canvas:Sprite = new Sprite(); board.addChild(canvas); //線の太さとカラー指定 canvas.graphics.lineStyle(10,0xFFFFFF); board.addEventListener(MouseEvent.MOUSE_DOWN,drawOn); board.addEventListener(MouseEvent.CLICK,drawDott); //ドット書き込み function drawDott(e:MouseEvent):void{ var dott:Shape = new Shape(); dott.graphics.beginFill(0xff0000); dott.graphics.drawCircle(board.mouseX,board.mouseY,5); dott.graphics.endFill(); canvas.addChild(dott); } //現在のマウスの位置に、moveToメソッドを使って描画のスタート地点を移動 function drawOn(event:MouseEvent) { board.addEventListener(MouseEvent.MOUSE_MOVE,drawLine); canvas.graphics.moveTo(event.localX,event.localY); } //マウスを離したら、描画モードをオフにする board.addEventListener(MouseEvent.MOUSE_UP,drawOff); board.addEventListener(MouseEvent.ROLL_OUT,drawOff); function drawOff(event:MouseEvent) { board.removeEventListener(MouseEvent.MOUSE_MOVE,drawLine); } //マウスの移動に合わせて、線を引く関数 function drawLine(event:MouseEvent) { canvas.graphics.lineTo(event.localX,event.localY); } |
あにぃ | Åê¹ÆNo.40239 投稿日時: 2008-9-10 19:57 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: 塗りつぶしについて
こういうことでいいのかな? ドット描画の際はShapeオブジェクトを作成しaddChildしているのに、 ライン描画の際はcanvasに直接書いてる為ですよ。
|
jyanpoke7 | Åê¹ÆNo.40240 投稿日時: 2008-9-10 20:20 |
新米 居住地: 投稿: 3
使用環境:
|
Re: 塗りつぶしについて あにぃさん
有難う御座います。 動作するようになりました。 基本的な事がまだまだですね。。。 |
jyanpoke7 | Åê¹ÆNo.40287 投稿日時: 2008-9-15 20:13 |
新米 居住地: 投稿: 3
使用環境:
|
Re: 塗りつぶしについて 単純に塗って、消す事は出来たので
下記サイトのような物を一部導入したいのですが つまづいております。 http://kokuban.in/draw 1.カーソルを変更すると、曲線描いている時に 直線になってしまう時がある(カーソルを変更しないと問題無い) 2.CLICKして描いている時はカーソルが元に戻らず、 枠で止まるようにしたい 3.MCなどで作成した、オリジナルのラインで描く事は 可能なのでしょうか。 以上お手数ですがよろしくお願いいたします。 package { import flash.display.Shape; import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Graphics; import flash.display.LineScaleMode; import flash.display.SimpleButton; import flash.geom.Point; import flash.geom.Rectangle; import flash.events.Event; import flash.events.MouseEvent; import flash.ui.*; public class Main extends Sprite { //落書きを表示する用のスプライト(Sprite)を作成 private var canvas:Sprite = new Sprite(); private var color:Number = 0x000000; private var pen:uint = 10; private var boardRect:Rectangle; private var mousePoint:Point; public function Main():void { board_mc.addChild(canvas); //ボードの範囲 boardRect = new Rectangle(board_mc.x, board_mc.y, board_mc.width, board_mc.height); //マウスを押したら、描画モード board_mc.addEventListener(MouseEvent.MOUSE_DOWN,drawOn); //マウスを離したら、描画モードをオフ board_mc.addEventListener(MouseEvent.MOUSE_UP,drawOff); //CLEARボタン clear_btn.addEventListener(MouseEvent.CLICK, clearEvent); //カーソル変更 addEventListener(Event.ENTER_FRAME, cursor); cursor_mc.visible = false; } //カーソル変更 public function cursor(e:Event):void { //マウスの座標 mousePoint = new Point(mouseX, mouseY); //ボードの範囲外なら元に戻す if (!boardRect.containsPoint(mousePoint)) { Mouse.show(); cursor_mc.visible = false; return; } //カーソルを変更 Mouse.hide(); cursor_mc.visible = true; stage.addEventListener(MouseEvent.MOUSE_MOVE,function(event){ cursor_mc.x = mouseX; cursor_mc.y = mouseY; event.updateAfterEvent(); }); } //CLEAR public function clearEvent(e:Event):void { canvas.graphics.clear(); } //マウスの座標 private function mousePointGet():void { mousePoint = new Point(mouseX, mouseY); } //書き込み準備 function drawOn(event:MouseEvent) { board_mc.addEventListener(MouseEvent.MOUSE_MOVE,drawLine); canvas.graphics.moveTo(event.localX,event.localY); } //書き込み終了 function drawOff(event:MouseEvent) { board_mc.removeEventListener(MouseEvent.MOUSE_MOVE,drawLine); } //描画開始 function drawLine(event:MouseEvent) { mousePointGet(); //線の太さとカラー指定 if (boardRect.containsPoint(mousePoint)){ canvas.graphics.lineStyle(pen,color); canvas.graphics.lineTo(event.localX, event.localY); } } } } |
あにぃ | Åê¹ÆNo.40352 投稿日時: 2008-9-22 15:40 |
職人 居住地: 北海道 投稿: 250
使用環境:
Flash8 FlashCS3 WinXP FlashLite1.1 / 2.0 |
Re: 塗りつぶしについて ソースが見づらいです。
とりあえず、下記をちゃんと読みましょう。 http://www.flash-jp.com/modules/xoopsfaq/index.php?cat_id=2#q7 引用: jyanpoke7さんは書きました: そもそも、MOUSE_MOVEイベントを2回使う必要があるのでしょうか? 引用: jyanpoke7さんは書きました: 引用: jyanpoke7さんは書きました:
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |