![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
絵を描き、その都度のxy座標を一つの配列に記録するものを作っています。
http://okwave.jp/qa/q6110995.html の続きです
長くて申し訳ありません
(1)マウスのボタンが押されたとき、またその状態でカーソルが動いたときに配列xyにその時の座標drawX,drawYを追加する。次にそれを新しい配列hitohudeの末尾に追加する 現在hitohude = { (drawX1,drawY1),(drawX2,drawY2),(drawX3,drawY3)...}
(2)マウスのボタンが上がったら配列allに(1)で作った配列hitohudeを追加する
これを文字や絵の画数の数だけ繰り返し
all = [ { (x1-1,y1-1),(x1-2,y1-2),(x1-3,y1-3)...} , { (x2-1,y2-1),(x2-2,y2-2),(x2-3,y2-3) }... ]
( ):その都度の座標 { }:一筆の中での座標の集合 [ ]:各筆の集合
を作り、all[5][9][0]のように6筆目の9番目のプロットのx座標を呼び出したりできるようにしたいです。
しかし、BIGIN以外の関数内でhitohudeが読めず、エラーが出てしまいます
http://help.adobe.com/ja_JP/ActionScript/3.0_Pro …
で説明されていることが原因だと思うのですが、どうすればよいでしょうか?
import fl.motion.MotionEvent;
import flash.sensors.Accelerometer;
masu.addEventListener(MouseEvent.MOUSE_DOWN,BIGIN);
masu.addEventListener(MouseEvent.MOUSE_UP,END);
var all:Array = new Array();
function BIGIN(eventObject:MouseEvent):void {
var drawX = Math.round(mouseX - masu.x);
var drawY = Math.round(mouseY - masu.y);
comma.text = ","
Xzahyo.text = drawX;
Yzahyo.text = drawY;
var hitohude:Array = new Array(); //ここ
var xy:Array = new Array();
xy.push(drawX,drawY);
hitohude.push(xy);
masu.graphics.lineStyle(Number(hutosa.text),0x000000);
masu.graphics.moveTo(drawX,drawY);
masu.addEventListener(MouseEvent.MOUSE_MOVE,DRAW);
}
function DRAW(eventObject:MouseEvent):void {
var drawX = Math.round(mouseX - masu.x);
var drawY = Math.round(mouseY - masu.y);
Xzahyo.text = drawX;
Yzahyo.text = drawY;
var xy:Array = new Array;
xy.push(drawX,drawY);
hitohude.push(xy);
masu.graphics.lineTo(drawX,drawY);
}
function END(eventObject:MouseEvent):void {
masu.removeEventListener(MouseEvent.MOUSE_MOVE,DRAW);
all.push(hitohude);
trace(hitohude);
}
よろしくお願いします
No.3
- 回答日時:
#1です。
さっきFlash入ったマシンで確認しました。
spliceしちゃ駄目ですね。ASのArrayは参照型なので、そいつを追加した後、いったん空にして使いまわすんで、延々と同じhitohudeが配列に追加されたものができて。。
#2さんの
hitohude = new Array();
で新しい配列参照を確保するのが正解です。
No.1
- 回答日時:
いま使ってるマシンにFlash入ってなくて動作試せないんですが、メソッド内部で
定義生成したローカル変数に、外部メソからアクセスするのはそりゃー無理です。
なので、"hitohude"Arrayの定義を外に出してあげて、BEGINメソではその全配列
要素を削除するように。
BEGINイベントハンドラで、Array要素が空なのでspliceしたらエラーが出る?場合
は、"hitohude"になんか要素を入れれば。
hitohude.splice(0)の代わりに、hitohude=null;でもいけるかな?
変更箇所だけ書きますね。
var hitohude:Array = new Array(); // hitohudeをprivateなvarに
// hitohude.push("始めやす");
function BEGIN(eventObject:MouseEvent):void {
hitohude.splice(0); // hitohudeから全要素削除(クリア)
}
function DRAW(eventObject:MouseEvent):void {
// 変更なし
}
function END(eventObject:MouseEvent):void {
// 変更なし
}
外していたらごめんなさい。
この回答への補足
hitohude.splice(0); // hitohudeから全要素削除(クリア)
は上手くできているのですが、二筆目以降、前の筆でallに入れたhitohudeがhitohude.splice(0);とDRAWでの変更に影響されてしまっていて、結果としてallが最後に作った同じhitohudeが筆の回数分連なったものになってしまいます・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- 数学 あってますか? 2 2022/05/30 19:01
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- 物理学 質点に与えられる力が、保存力F=(y^2/2, xy)と表されるとき、位置エネルギーU(x, y)を 3 2023/02/11 20:43
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでボタンを押すと画像をラン...
-
DataGridでCTRLキーを押さずに...
-
IDの自動採番について
-
配列の要素番号を取得するには?
-
簡単な当たり判定作りたい
-
変な質問ですみません、n番目の...
-
actionscript2.0で動的な位置変化
-
問題がランダムに出るクイズ
-
配列の中にもう1度配列を宣言?
-
景品パネルの作り方
-
FlashソフトSuzukaで、トランプ...
-
VB6でユーザー定義型がNothing...
-
c++ cmathとmath.h
-
エラー(型が一致しません。)...
-
Flash lite1.1で日数のカウント...
-
TextChangeイベントが発生しない
-
ifdefとenum
-
jQueryの関数内の変数について...
-
クイズ作成に関して xml形式の...
-
PV3Dでのアニメーション
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET の配列の要素数
-
変な質問ですみません、n番目の...
-
配列の要素番号を取得するには?
-
重複しない乱数の生成
-
VBでボタンを押すと画像をラン...
-
DataGridでCTRLキーを押さずに...
-
重複しない乱数整数を発生させる。
-
景品パネルの作り方
-
VB6 複数行のテキストをリスト...
-
ランダム表示を重複させないよ...
-
ランダムに6つの数字を選びその...
-
Flashでランダムクイズゲームを...
-
【数字ランダム】計算問題ラン...
-
複数の変数宣言を、for文で一気...
-
[Objective-c]多次元配列のアク...
-
Vba 配列の中の特定文字列の位...
-
二次元配列
-
データ構造のテキスト保存につ...
-
簡単な当たり判定作りたい
-
絵を描き、その都度のxy座標を...
おすすめ情報