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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     線画の開始位置
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Anduril
Åê¹ÆNo.42466
投稿日時: 2009-6-1 13:37
新米
居住地: California
投稿: 27
使用環境:
Windows XP, Flash CS3 Professional
線画の開始位置
今晩は。いつもお世話になっております。
色の付いたボタンを押すと、その色を使ってマウスで線画を描くゲームを作っています。
Flash CS3 ProfessionalでAS3を使用しています。

色をランダムに設定するボタンも線画を消すボタンも完成したのですが、線画の開始位置がどうしてもx, y = 0, 0の位置からになってしまいます。ASでmouseX, mouseYと設定しているので、マウスの場所から線が描かれていいはずなのですが、何か欠けているASがあるのでしょうか?

var flag:Boolean=false;
var color:Number;

var newLine4:Shape = new Shape();

btnRainbow.addEventListener(MouseEvent.CLICK, colorRainbow);
function colorRainbow(event:MouseEvent):void
{
color = Math.random()* 0xffffff;
}

stage.addEventListener(MouseEvent.MOUSE_DOWN, drawRainbow);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveRainbow);
stage.addEventListener(MouseEvent.MOUSE_UP, quitRainbow);

function drawRainbow(event:MouseEvent):void
{
flag = true;
newLine4.graphics.lineStyle(3);
newLine4.graphics.lineTo(mouseX, mouseY);
}

function moveRainbow(event:MouseEvent):void
{
if(flag == true)
{
newLine4.graphics.moveTo(mouseX, mouseY);
addChild(newLine4);
}
}

function quitRainbow(event:MouseEvent):void
{
flag = false;
}
//stage clear
btnClear.addEventListener(MouseEvent.MOUSE_DOWN, clearStage);
function clearStage(event:MouseEvent):void
{
newLine4.graphics.clear();
}

どこが足りない(余分)なのか、教えていただけると助かります。よろしくお願いいたします。
野中文雄
Åê¹ÆNo.42467
投稿日時: 2009-6-1 14:23
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 線画の開始位置
問題は単純化して試すべきです。
引用:
Andurilさんは書きました:
色をランダムに設定するボタンも線画を消すボタンも完成したのですが、線画の開始位置がどうしてもx, y = 0, 0の位置からになってしまいます。ASでmouseX, mouseYと設定しているので、マウスの場所から線が描かれていいはずなのですが、何か欠けているASがあるのでしょうか?
// var flag:Boolean = false;
var color:Number;

var newLine4:Shape = new Shape();

// btnRainbow.addEventListener(MouseEvent.CLICK, colorRainbow);
// function colorRainbow(event:MouseEvent):void {
	// color = Math.random() * 0xffffff;
	color = Math.floor(Math.random() * 0xffffff);
// }

// stage.addEventListener(MouseEvent.MOUSE_DOWN, drawRainbow);
// stage.addEventListener(MouseEvent.MOUSE_MOVE, moveRainbow);
// stage.addEventListener(MouseEvent.MOUSE_UP, quitRainbow);
// moveRainbow(null);
drawRainbow(null);
moveRainbow(null);
function drawRainbow(event:MouseEvent):void {
	// flag = true;
	// newLine4.graphics.lineStyle(3);
	newLine4.graphics.lineStyle(3, color);
	// newLine4.graphics.lineTo(mouseX, mouseY);
	newLine4.graphics.lineTo(100, 50);
}
function moveRainbow(event:MouseEvent):void {
	// if (flag == true) {
		// newLine4.graphics.moveTo(mouseX, mouseY);
		newLine4.graphics.moveTo(50, 20);
		addChild(newLine4);
	// }
}
/* 以下コメントアウト

もっと単純化すれば、こうなります。
var newLine4:Shape = new Shape();
var color:Number = Math.floor(Math.random() * 0xffffff);
newLine4.graphics.lineStyle(3, color);
newLine4.graphics.lineTo(100, 50);
newLine4.graphics.moveTo(50, 20);
addChild(newLine4);


----------------
 

Anduril
Åê¹ÆNo.42468
投稿日時: 2009-6-1 14:49
新米
居住地: California
投稿: 27
使用環境:
Windows XP, Flash CS3 Professional
Re: 線画の開始位置
野中様
早々にコメントを頂きありがとうございました。
ただこのゲーム(?)はマウスを使用して自由にお絵描きをしましょうという目的なので、説明していただいた内容は理解できたのですが、マウスを押して動かしている間は線が描けて、マウスを放すとお絵描き終わり、という目的とは離れてしまうように思います…。
それと線画の開始点がマウスのx, yと一致しない(何故だか必ず0, 0からスタートしてしまう)、というのが私の一番の問題点なので、もしも「ここがおかしいからそうなるんだよ」という部分を指摘していただけると、非常に助かります。
ありがとうございました。
野中文雄
Åê¹ÆNo.42469
投稿日時: 2009-6-1 15:02
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 線画の開始位置
「目的」はお手玉10個だからといって、いっぺんに10個をいくら投げ続けても、おそらくその「目的」は達せられません。2個か3個で練習することが、「目的とは離れてしまう」とお感じになるのでしょうか。
引用:
Andurilさんは書きました:
ただこのゲーム(?)はマウスを使用して自由にお絵描きをしましょうという目的なので、説明していただいた内容は理解できたのですが、マウスを押して動かしている間は線が描けて、マウスを放すとお絵描き終わり、という目的とは離れてしまうように思います…。

その「一番の問題点」を切出したのが、以下の6行のステートメントです。つまり「ここがおかしいからそうなるん」です。このわずか6行(描画にかぎれば3行)の線描がなぜ「必ず0, 0からスタートしてしまう」のか研究されるべきでしょう。
var newLine4:Shape = new Shape();
var color:Number = Math.floor(Math.random() * 0xffffff);
newLine4.graphics.lineStyle(3, color);
newLine4.graphics.lineTo(100, 50);
newLine4.graphics.moveTo(50, 20);
addChild(newLine4);

引用:
それと線画の開始点がマウスのx, yと一致しない(何故だか必ず0, 0からスタートしてしまう)、というのが私の一番の問題点なので、もしも「ここがおかしいからそうなるんだよ」という部分を指摘していただけると、非常に助かります。


----------------
 

Anduril
Åê¹ÆNo.42493
投稿日時: 2009-6-3 15:59
新米
居住地: California
投稿: 27
使用環境:
Windows XP, Flash CS3 Professional
Re: 線画の開始位置
野中様
お返事頂きありがとうございました。
>このわずか6行(描画にかぎれば3行)の線描がなぜ「必ず0, 0からスタートしてしまう」のか研究されるべきでしょう。

考えてみましたが、正直言って解りません。
newLine4.graphics.lineTo(100, 50);
の100はx座標、50はy座標でそこが開始点になると理解していましたが、どうも違うようですね。
そして
newLine4.graphics.moveTo(50, 20);
で、開始点からx座標が50に、y座標が20の位置に線が引かれる訳ですよね?

お忙しいとは思いますが、説明していただけると非常にありがたいです。
ひろゆき
Åê¹ÆNo.42494
投稿日時: 2009-6-3 16:14
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 線画の開始位置
引用:
Andurilさんは書きました:
考えてみましたが、正直言って解りません。

考えても分からなければ、ヘルプなどをお読みになるべきでは?

http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/display/Graphics.html
引用:
moveTo(x:Number, y:Number):void
現在の描画位置を (x, y) に移動します。

引用:
lineTo(x:Number, y:Number):void
現在の描画位置から (x, y) まで、現在の線のスタイルを使用して線を描画します。その後で、現在の描画位置は (x, y) に設定されます。


引用:
newLine4.graphics.lineTo(100, 50);
の100はx座標、50はy座標でそこが開始点になると理解していましたが、どうも違うようですね。
そして
newLine4.graphics.moveTo(50, 20);
で、開始点からx座標が50に、y座標が20の位置に線が引かれる訳ですよね?

上記リンク先の「lineTo() メソッド」で書かれている例を見ても分かりますが、
全く正反対の理解をされていると思います。

要するに、こういうことですね。
moveTo(x0, y0);
lineTo(x1, y1);
lineTo(x2, y2);
で、(x0, y0)から(x1, y1)に線を引き、続いて、(x1, y1)から(x2, y2)に線を引く。

ということは、
lineTo(x1, y1);
なんてことをしたら、描画の開始位置が分からないので、
(0, 0)から(x1, y1)に線を引くことになりますね。


----------------
質問する際は、回答者に具体的な情報を与えてください。

Anduril
Åê¹ÆNo.42496
投稿日時: 2009-6-3 17:05
新米
居住地: California
投稿: 27
使用環境:
Windows XP, Flash CS3 Professional
Re: 線画の開始位置
mayor様、こんばんは。コメントありがとうございました。
引用:
newLine4.graphics.lineTo(100, 50);
の100はx座標、50はy座標でそこが開始点になると理解していましたが、どうも違うようですね。
そして
newLine4.graphics.moveTo(50, 20);
で、開始点からx座標が50に、y座標が20の位置に線が引かれる訳ですよね?


失礼いたしました。夜中も過ぎて寝ぼけているものでmoveToとlineToをひっくり返して書いてしまいました。
newLine4.graphics.moveTo(50, 20);
の50はx座標、20はy座標でそこが開始点になると理解していましたが、どうも違うようですね。
そして
newLine4.graphics.lineTo(100, 50);
で、開始点(50, 20)からx座標が100に、y座標が50の位置に線が引かれる訳ですよね?
の間違いでした。
野中文雄
Åê¹ÆNo.42497
投稿日時: 2009-6-3 17:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 線画の開始位置
ひろゆきさんの引用にひとつ追加します。

[Graphics]「lineTo()メソッド」の項より引用:
lineTo()を呼び出してからmoveTo()メソッドを呼び出すと、現在の描画位置はデフォルトで(0,0)になります


もっとも、英語原文は、つぎのように邦訳する方が適切だと思われます。

moveTo()メソッドを呼出す前にlineTo()メソッドを呼出すと、現行の描画のデフォルト位置は(0, 0)になります。」

[追記] 米国にお住まいでしたら、英語原文をきちんとお読みになれば、仕様どおりの結果であることはおわかりいただけるはずです。


----------------
 

Anduril
Åê¹ÆNo.42507
投稿日時: 2009-6-4 14:19
新米
居住地: California
投稿: 27
使用環境:
Windows XP, Flash CS3 Professional
Re: 線画の開始位置
野中様
お忙しい中、解説をいただいたばかりか私の英語能力の心配までしていただき、ありがとうございました。
いや?、Flashだけでなく英語も本当に難儀していますわ(苦笑)。

それにしてもこちらにお邪魔するたびに思うのですが、こちらの「初心者」のレベルって本当に高いですね。質問をするたびに「こんな事も解らないのか?」と言われているようで、なかなか気軽に投稿できません。

私はプログラミング脳を持っていないようで(完璧な文系です)、理解度も遅いし、趣味でやっているオリンピック種目にもなっているスポーツで、時々クラブにやって来るオリンピックメダリストの人に「すみません、ド下手なんですけれど、練習試合していただけませんか?」とお願いする方が、こちらに質問を載せるよりもはるかに簡単なような気がします。

野中様、ひろゆき様、お忙しい中、理解度の低い初心者に貴重なお時間を割いて丁寧に説明していただき、まことにありがとうございました。
野中文雄
Åê¹ÆNo.42508
投稿日時: 2009-6-4 14:40
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 線画の開始位置
誤解があるかもしれませんので、私なりに少しまとめておきます。

まず、「レベル」の高い低いは、問題だと思いません。レベルが高かろうが、低かろうが、自分でできることはやってみましょう、というだけです。

第1に私が申し上げたのは、動かないスクリプトを丸まる試すのでなく、もっと絞り込んで検討しましょうということです。つまりいきなり試合に臨むのでなく、テニスならサーブとかボレーとか、レシーブといった基本を予め練習しておくことが大切ではないでしょうか。

第2にひろゆきさんが指摘されたのは、わからない点はヘルプを調べてみましょうということです。これはスポーツなら、ルールブックを読みましょうというのと変わりません。


----------------
 

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

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