编辑:哇,我没有意识到我做了这么多非常错误的事情。这是我自己编写的第一个代码,没有使用学校提供的东西。猜猜我在几节课后试图咬得比我能咀嚼的更多。
在谷歌搜索答案然后复制我认为需要的代码部分(强调“思想”)后,我得到了大部分内容。
还有办法“保存”代码吗?还是最好放弃它并重新开始?无论哪种方式,那么正确的方法是什么?
另外,我会问我的老师是否可以。但是我们不再和他一起上课,因此这个人不再可用(或者至少不回复我的电子邮件。)我自己做这个是为了另一个学校作业。所以这就是我转向互联网的原因。
谢谢你解释你所做的一切。我很感激你花时间这样做:)
现在,继续回答您的一些问题,并提出新问题:
只有第一个符号称为符号 1,其他符号都有“真实”名称。当我开始这个项目并保持这种状态时,我忘记了改变它,因为我确切地知道它是什么,因为它是唯一一个这样称呼的。
.. 你知道如果计数器等于 5 会产生什么样的名字吗?“半圆 15”。 是的,我意识到这一点。现在我看到它是这样的,同意这不是一个很好的写下来的方式。在命名我的 HalfCircle1-4 时没有考虑足够的问题。
你认为它有什么作用? 好吧,让我尝试更清楚地解释它:当您拖放副本时,您不能再移动/选择它。我希望用户能够选择它,这样他就可以随意多次拖放它。所以,我认为这意味着我必须将 eventListeners 添加到我制作的所有副本中?这就是我在这里想要做的。另外,感谢您的错误解释。那么,这更像是它吗?:
function makeListeners(copy:DisplayObject):void
{
var i = this.numChildren;
i.addEventListener(MouseEvent.CLICK, moveCopy);
}
我还将 makeListeners 调用移到了我制作副本的地方。所以它应该只运行一次,当你制作副本时,对吧?
你为什么使用索引 3 作为“最新的孩子”索引?这没有任何意义。 我用谷歌搜索了如何做到这一点,我相信它告诉我“索引”是您想要将孩子添加到的“层”(因为没有更好的词)?我将它添加到 3,以便它们位于我的其他一些图像之上和其他一些图像之下。它似乎是这样工作的,尽管现在我也开始质疑这一点。
这是我现在所拥有的(删除了其他数字,以便更容易查看代码)。这给了我一个新的错误 TypeError: Error #1006: value is geen functie。在 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!');
}