編集:うわー、私は自分がそんなにひどく間違ったことをしていることに気づいていませんでした。これは、学校が提供したものを使用せずに、私が自分で書いた最初のコードです。数回のレッスンの後、噛むことができる以上に噛み砕こうとしたと思います。
答えをグーグルで検索し、必要だと思ったコードの部分(「思考」を強調)をコピーした後、このほとんどを取得しました。
コードを「保存」する方法はまだありますか?それとも、それを廃棄して新たに開始するのが最善ですか?そしていずれにせよ、それを行う正しい方法は何ですか?
また、できれば先生に聞いてみます。しかし、私たちはもう彼と一緒にクラスを持っていないので、その男はもう利用できません(または少なくとも私の電子メールに応答していません)。私は別の学校の割り当てのためにこれを自分で行っています。だから私はインターネットに目を向けました。
あなたがしたすべてを説明してくれてありがとう。お時間を割いていただきありがとうございます:)
さて、あなたの質問のいくつかに答えて、新しい質問をするために:
最初のシンボルのみがシンボル1と呼ばれ、他のシンボルはすべて「実際の」名前を持っています。プロジェクトを始めたとき、それを変更するのを忘れて、それが何であるかを正確に知っているので、それをそのままにしました。それは、そのように呼ばれる唯一のものだからです。
..カウンターが5の場合、その名前からどのような名前が出てくるか知っていますか?「HalfCircle15」。 はい、わかりました。そして今、私はそれをそのように見ているので、それを書き留めるのはあまりきちんとした方法ではないことに同意します。私のHalfCirlce1-4に名前を付けるとき、それを十分に考えていませんでした。
あなたはそれが何をすると思いますか? わかりました。もっと明確に説明しましょう。コピーをドラッグアンドドロップすると、移動/選択できなくなります。ユーザーがそれを選択できるようにしたいので、ユーザーは何度でもドラッグアンドドロップできます。だから、これは私が作成するすべてのコピーにeventListenersを追加する必要があることを意味すると思いますか?それが私がここでやろうとしていたことです。また、エラーの説明に感謝します。だから、これはもっと似ていますか?:
function makeListeners(copy:DisplayObject):void
{
var i = this.numChildren;
i.addEventListener(MouseEvent.CLICK, moveCopy);
}
また、makeListeners呼び出しをコピーを作成する場所に移動しました。ですから、コピーを作成するときに、一度だけ実行する必要がありますよね?
なぜインデックス3を「最新の子」インデックスとして使用しているのですか?それは本当に意味がありません。 私はこれを行う方法をグーグルで検索しました、そしてそれはあなたが子供を追加したい「レイヤー」(より良い言葉の欠如のために)であると私に言ったと思いますか?3に追加して、他の画像の上と下に配置しました。それはそのように機能しているように見えましたが、今私もこれに疑問を呈し始めています。
これが私が今持っているものです(コードを見やすくするために他の図を削除しました)。これにより、新しいエラーTypeError:Error#1006:value isgeenfunctieが発生します。rondje1 / makeListeners()でrondje1 / dragRondje()で:それで私はそれが正しくないことに気づきます。しかし、これは少なくとも以前よりも正しい方向に向かっているのでしょうか?
import flash.display.*;
import flash.events.MouseEvent;
import flash.ui.Mouse;
var counter=1;
var copy;
//Copy dan drag and drop Rondje
buttonRondje.addEventListener(MouseEvent.CLICK, dragRondje);
function dragRondje(event:MouseEvent):void
{
this["rondje"+ (counter)]=new block;
this["rondje"+(counter)].x=mouseX-45;
this["rondje"+ (counter)].y=mouseY-45;
copy = addChildAt(this["rondje"+(counter)], 3);
counter++;
copy.startDrag();
makeListeners(copy);
}
//DROP
stage.addEventListener(MouseEvent.MOUSE_UP, dropEverything);
function dropEverything(event:MouseEvent):void
{
stopDrag();
}
//Remove latest child
buttonRemoveChild.addEventListener(MouseEvent.CLICK, removeNewestChild);
function removeNewestChild(event:MouseEvent):void
{
var i = 0;
i = this.numChildren;
if (i > 10 )
{
this.removeChildAt(3);
}
}
function makeListeners(copy:DisplayObject):void
{
var i = this.numChildren;
i.addEventListener(MouseEvent.CLICK, moveCopy);
}
function moveCopy(event:MouseEvent):void
{
trace('move copy!');
}
ORINIAL POST学校のプロジェクトのために少し「ドラッグアンドドロップ」するものを作成していますが、問題が発生しました。
今のところ、ボタンをクリックすると、ライブラリからシンボルのコピーをドラッグし始めるように設定されています。アプリのどこかをクリックすると、もう一度ドロップします。私が問題を抱えているのは、ユーザーがこのコピーを取り出して再度ドラッグできるようにするコードです。
それは私にこのエラーを与えます:
TypeError:エラー#1034:タイプ強制が失敗しました:ブロック@2a308041をflash.events.Eventに変換できません。rondje1 / dropEverything()で
これが私がコピーを作成するコードです:
//Copy dan drag and drop Rondje
buttonRondje.addEventListener(MouseEvent.CLICK, dragRondje);
function dragRondje(event:MouseEvent):void
{
this["rondje"+ (counter)]=new block;
this["rondje"+(counter)].x=mouseX-45;
this["rondje"+ (counter)].y=mouseY-45;
copy = addChildAt(this["rondje"+(counter)], 3);
counter++;
copy.startDrag();
}
ドロップする場所をコーディングし、イベントリスナーをコピーに追加します。
//DROP
stage.addEventListener(MouseEvent.MOUSE_UP, dropEverything);
function dropEverything(event:MouseEvent):void
{
stopDrag();
makeListeners(copy);
}
リスナーを追加するコード:
function makeListeners(e:Event):void
{
var i = 0;
i = this.numChildren;
for (i = this.numChildren;i<10;i++)
{
this.addEventListener(MouseEvent.CLICK, moveCopy);
}
}
function moveCopy(event:MouseEvent):void
{
trace('move copy!');
}
シンボルは次のように設定されます。
- 名前:シンボル1
- タイプ:ムービークリップ
- ActionScript用にエクスポート->チェック済み
- フレーム1でエクスポート->チェック済み
- クラス:ブロック
- 基本クラス:flash.display.MovieClip
ここでエラーが発生する理由がよくわかりません:Sここの誰かが私を助けてくれることを願っています。私は永遠に感謝します。よろしくお願いします、Xx
ps:コード全体は次のとおりです。
import flash.display.*;
import flash.events.MouseEvent;
import flash.ui.Mouse;
var counter=1;
var copy;
//Copy dan drag and drop Rondje
buttonRondje.addEventListener(MouseEvent.CLICK, dragRondje);
function dragRondje(event:MouseEvent):void
{
this["rondje"+ (counter)]=new block;
this["rondje"+(counter)].x=mouseX-45;
this["rondje"+ (counter)].y=mouseY-45;
copy = addChildAt(this["rondje"+(counter)], 3);
counter++;
copy.startDrag();
}
//Copy dan drag and drop HalfCircle1
buttonHalfCircle1.addEventListener(MouseEvent.CLICK, dragHalfCircle1);
function dragHalfCircle1(event:MouseEvent):void
{
this["HalfCircle1"+(counter)]=new HalfCircle1;
this["HalfCircle1"+(counter)].x=mouseX - 45;
this["HalfCircle1"+(counter)].y=mouseY - 55;
copy = addChildAt(this["HalfCircle1"+(counter)], 3);
counter++;
copy.startDrag();
}
//Copy dan drag and drop HalfCircle2
buttonHalfCircle2.addEventListener(MouseEvent.CLICK, dragHalfCircle2);
function dragHalfCircle2(event:MouseEvent):void
{
this["HalfCircle2"+(counter)]=new HalfCircle2;
this["HalfCircle2"+(counter)].x=mouseX - 45;
this["HalfCircle2"+(counter)].y=mouseY - 55;
copy = addChildAt(this["HalfCircle2"+(counter)], 3);
counter++;
copy.startDrag();
}
//Copy dan drag and drop HalfCircle3
buttonHalfCircle3.addEventListener(MouseEvent.CLICK, dragHalfCircle3);
function dragHalfCircle3(event:MouseEvent):void
{
this["HalfCircle3"+(counter)]=new HalfCircle3;
this["HalfCircle3"+(counter)].x=mouseX - 45;
this["HalfCircle3"+(counter)].y=mouseY - 5;
copy = addChildAt(this["HalfCircle3"+(counter)], 3);
counter++;
copy.startDrag();
}
//Copy dan drag and drop HalfCircle4
buttonHalfCircle4.addEventListener(MouseEvent.CLICK, dragHalfCircle4);
function dragHalfCircle4(event:MouseEvent):void
{
this["HalfCircle4"+(counter)]=new HalfCircle4;
this["HalfCircle4"+(counter)].x=mouseX - 45;
this["HalfCircle4"+(counter)].y=mouseY - 5;
copy = addChildAt(this["HalfCircle4"+(counter)], 3);
counter++;
copy.startDrag();
}
//Copy dan drag and drop Streep
buttonStreep.addEventListener(MouseEvent.CLICK, dragStreep);
function dragStreep(event:MouseEvent):void
{
this["streep"+(counter)]=new Streep;
this["streep"+(counter)].x=mouseX - 2;
this["streep"+(counter)].y=mouseY - 5;
copy = addChildAt(this["streep"+(counter)], 3);
counter++;
copy.startDrag();
}
//DROP
stage.addEventListener(MouseEvent.MOUSE_UP, dropEverything);
function dropEverything(event:MouseEvent):void
{
stopDrag();
makeListeners(copy);
}
//Remove latest child
buttonRemoveChild.addEventListener(MouseEvent.CLICK, removeNewestChild);
function removeNewestChild(event:MouseEvent):void
{
var i = 0;
i = this.numChildren;
if (i > 10 )
{
this.removeChildAt(3);
}
}
function makeListeners(e:Event):void
{
var i = 0;
i = this.numChildren;
for (i = this.numChildren;i<10;i++)
{
this.addEventListener(MouseEvent.CLICK, moveCopy);
}
}
function moveCopy(event:MouseEvent):void
{
trace('move copy!');
}