トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   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: 塗りつぶしについて
var canvas:Sprite = new Sprite();
board.addChild(canvas);

board.addEventListener(MouseEvent.MOUSE_DOWN,drawOn);
board.addEventListener(MouseEvent.CLICK,drawDott);

//ドット書き込み
function drawDott(e:MouseEvent):void {
	//線の太さとカラー指定
	canvas.graphics.lineStyle(0,0xff0000);
	canvas.graphics.beginFill(0xff0000);
	canvas.graphics.drawCircle(board.mouseX,board.mouseY,5);
	canvas.graphics.endFill();
}

//現在のマウスの位置に、moveToメソッドを使って描画のスタート地点を移動
function drawOn(event:MouseEvent) {
	board.addEventListener(MouseEvent.MOUSE_MOVE,drawLine);
	//線の太さとカラー指定
	canvas.graphics.lineStyle(10,0xFFFFFF);
	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);
}

こういうことでいいのかな?

ドット描画の際はShapeオブジェクトを作成しaddChildしているのに、
ライン描画の際はcanvasに直接書いてる為ですよ。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

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さんは書きました:

1.カーソルを変更すると、曲線描いている時に
直線になってしまう時がある(カーソルを変更しないと問題無い)
カーソル変更のMOUSE_MOVEにevent.updateAfterEvent();イベントを使用しているからでしょう。
そもそも、MOUSE_MOVEイベントを2回使う必要があるのでしょうか?

引用:
jyanpoke7さんは書きました:

2.CLICKして描いている時はカーソルが元に戻らず、
枠で止まるようにしたい
サイズ判定してそれ以外であれば動かさなければいいのでは?

引用:
jyanpoke7さんは書きました:

3.MCなどで作成した、オリジナルのラインで描く事は
可能なのでしょうか。
これの意味がわかりません。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops