主题:  简单拼图的疑问

FlashDev

职务:普通成员
等级:1
金币:0.0
发贴:33
注册:2001/12/12 18:20:20
#12002/4/24 16:15:38
在网上找到一篇介绍简单拼图的教程,按照教程一步一步的来,可是在设置拖动图片的as时,发现命令“on”却为灰色。不知是哪儿做错了?



Mozier

职务:管理员
等级:5
金币:11.0
发贴:2994
注册:2004/1/12 17:26:30
#22002/4/24 19:47:46
"on"?
是on (press){
}
on(release){
}
还是MC的onClipEvent()?
说清楚点,或是把fla发上来,大家看看。。;););)



FlashDev

职务:普通成员
等级:1
金币:0.0
发贴:33
注册:2001/12/12 18:20:20
#32002/4/25 9:47:55
参照的教程(原文如下):

简单的拖拽拼图
( 1999-11-13 )

作者: 边城浪子

  好吧,还是先看看再说吧。请看右边的这个演示。尝试着用鼠标去移动奇怪形状的碎片,然后把它们放到下面去。您会发现:原来这是一个拼图(PUZZLE)游戏。

  在最开始的BETA版本的FLASH4里面曾经有过一个拼图的游戏,而且带有原始代码,可是不知道为什么后来在正式版本中反而没有了。不过,无所谓,现在,我们可以提供自己的。

  那么,这种效果是怎么制作出来的呢,判断坐标?不是这样的,因为在FLASH中,坐标还是很精确的,一般来说,没有人能把两个对象的坐标通过移动来达到绝对的温和。那么,是怎么实现的呢?就跟着我一点一点的开始做吧。
  这个项目需要用到FLASH中全部三种对象:图片(Graphic)、按钮(Button)和动画片段(Movie Clip)。
  首先,要 Import (输入)一张图片到新建立的文件里面,给它起个名字叫 flash。
  然后用 CTRL+B将其打散,就成了左边中间图片的摸样。使用 Lasso/Polygon Mode 工具(见图)把图片切割开来,就成了两个分离的碎片。
  有了碎片以后,我们真正的工作开始了。
  选择左边的碎片,按下 F8,会弹出建立新对象的窗口,我们管它叫 p1,同样,将右边的碎片做成名为 p2 的对象。
  下一步,制作按钮。按 CTRL+L 弹出 Library 窗口,选取 New Symbols(左下角的加号图标),在弹出的窗口中输入 b1,选取 Behavior 为 Button。
  这样,我们就可以定义我们的拖拽按钮了。
  看右边的图片,我们将已经制作好的对象 p1 拖到按钮的 Up 状态处,就可以了。这样,我们生成了一个不会变化的最简单的按钮。
  同样,用对象 p2 制作出按钮 b2。
  下面,我们开始制作最关键的东西:动画片段(Movie Clip)。其实很简单,同样是在 Library 窗口中添加新的对象,只不过这次是动画片段对象。取个名字叫 m1, Behavior 设为 Movie Clip,把我们制作好的按钮 b1拖动到这里来,时间条上的显示就像右图一样,就可以了。同样,用 b2 生成我们的动画片段 m2。
  下面,我们可以把碎片放在舞台上了,将 m1 和 m2 放到舞台上,再将 p1 放上去,然后调整 p1 的颜色属性(Modify/Instance/Color Effect),调整成下图所示的样子,就可以了。
  同样,将 p2 也拖上舞台,然后也调整成同样的颜色。并且把 p1 和 p2 吻合起来,底版就成了。
  下面开始修改 p1、p2、m1 以及 m2 的 Instance name,同样也是用 Modify 菜单的 Instance 选项来完成。(如右图所示)每个对象的 Instance Name 按照下面的约定:(注意, p1 和 p2 要强制变成 Movie Clip,然后再定义名称)
 如果一切完备,那么,我们的 Library 窗口应该像左边这样。
  好了,我们的准备工作已经完成了。下面开始脚本的编写。
  为了让鼠标可以拖动我们的碎片,我们现在要去修改我们的动画片段,先从 m1 开始。在 Library 窗口中双点 m1 对象名称前面的图标,出现编辑画面,然后再双点编辑画面中的按钮,会出现属性窗口。选择 Action。
  我们的需要是:当鼠标按下以后,一直按着就可以拖动对象。当松开的时候,又会放下对象。那么,脚本就可以这样来写:
On (Press)
  Start Drag ("/1", lockcenter)
End On
On (Release)
  Stop Drag
End On 如果按钮按下
 拖动 Instance 1

如果按钮松开
 停止拖拽
  这样我们就可以拖拽一个碎片了,很容易,不是么?可是怎么才能判断最后是否放对了地方呢?我们需要增加一些脚本到按钮松开的过程里。请看下面的脚本:
On (Press)
  Start Drag ("/1", lockcenter)
End On
On (Release)
  Stop Drag
  If (_droptarget eq "/11")
    Set Property ("/1", X Position) =
GetProperty ( "/11", _x )
    Set Property ("/1", Y Position) =
GetProperty ( "/11", _y )
  End If
End On 如果按钮按下
 拖动 Instance 1

如果按钮松开
 停止拖拽
 判断是否放到了正确的地点,正确的话:
  将被拖动对象的坐标设置成底版对象的坐标
  同理,再完成另外一个碎片的修改。
  这就是我们完整的脚本,由于 _droptarget 可以告诉我们,在鼠标松开时对象放置位置上的对象的名称,所以我们可以判断两个对象是否比较吻合。如果吻合的话,将拖拽对象的坐标修正就可以了。
  最后,为了防止影片不断循环,在整个 Movie 的第一个 Frame 要加一个 action = stop。

×××××××××××××××××××××××××××××

源码: 下载



我是糖糖

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2002/3/1 23:45:31
#42002/4/26 23:22:41
我知道
你的先把你要做的先做成按钮
然后再把那个按钮f8变成mc

我一开始也有这个问题也是这样做的
再不,就用on ClipEvent



MXSTUDIO

职务:普通成员
等级:1
金币:0.0
发贴:111
注册:2002/4/25 8:49:05
#52002/4/27 0:35:58
mx的快捷键便了吗?
我的怎么和以前的不一样?