flash按钮与影片剪辑的关系

舞台上有很多按钮,库中有很多剪辑,不希望把库中的影片剪辑拖上舞台,但是,点按钮又可以播放库中的影片剪辑。要实现这个目标,应该怎样做?恳求诸位行家里手不吝赐教。... 舞台上有很多按钮,库中有很多剪辑,不希望把库中的影片剪辑拖上舞台,但是,点按钮又可以播放库中的影片剪辑。要实现这个目标,应该怎样做?恳求诸位行家里手不吝赐教。 展开
 我来答
赵客观天
推荐于2016-02-10 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:108
采纳率:75%
帮助的人:32万
展开全部
可以使用 ActionScript 创建 MovieClip 对象。默认情况下, Flash 文档库中的影片剪辑元件实例不能以动态方式创建(即只使用 ActionScript 创建)。这是因为导出供ActionScript 使用的每个元件都会增加 SWF 文件的大小,而且众所周知,有些元件可能不适合在舞台上使用。因此,为了使元件可以在 ActionScript 中使用,必须指定为 ActionScript 导出该元件。
简单说步骤就三步:
一、为 ActionScript 导出元件:
1 在“ 库” 面板中选择该元件(这里以Circle1为例,下面会用到)并打开其“ 元件属性” 对话框。
2 如果“ 高级” 设置没有显示出来,就单击它。
3 在“ 链接” 部分中,激活“ 为 ActionScript 导出” 复选框。
这将激活“ 类” 和“ 基类” 字段。
若要指定该元件对其行为使用自定义类,请在此字段中输入该类的完整名称,包括它所在的包。如果希望在 ActionScript中创建该元件的实例,但不需要添加任何其他行为,则可以使类名称保持原样。
“ 基类” 字段的值默认为 flash.display.MovieClip。如果想让元件扩展另一个自定义类的功能,可以指定该类的名称替代这个值,只要该类扩展 Sprite (或 MovieClip)类即可。
4 按“ 确定” 按钮以保存所做的更改。
此时,如果 Flash 无法找到包含指定类的定义的外部 ActionScript 文件(例如,如果不需要为元件添加其他行为),则会显示警告:
“无法在类路径中找到对此类的定义,因此将在导出时自动在 SWF 文件中生成相应的定义。”
如果库元件不需要超出 MovieClip 类功能的独特功能,则可以忽略此警告消息。
注意所有需要单击按钮出现的元件都要加上链接。

二、设置按钮属性
给主场景中的按钮添加实例名为play1Btn,play2Btn……
然后在辅助功能面板中,按照名称的顺序,依次为所有按钮都设置Tab键索引。

三、在帧上写代码。
在第 1 帧的关键帧上添加以下代码:
import flash.events.MouseEvent;
import flash.display.MovieClip;

//把所有元件链接的类都放在[]里。
const CLASS_VCT:Vector.<Class>=new <Class>[Circle1,Circle2];
var currentClass:Class;
var currentMc:MovieClip;

//这里假设舞台上没有其它需要单击的东西。
this.mouseEnabled=false;
this.addEventListener(MouseEvent.CLICK,clickHandler);

function clickHandler(me:MouseEvent):void
{
if(currentMc)
{
this.removeChild(currentMc);
}
currentClass=CLASS_VCT[me.target.tabIndex-1];
currentMc=new currentClass();
currentMc.mouseChildren=false;
currentMc.mouseEnabled=false;
currentMc.x=100;//设置MC的坐标。
currentMc.y=200;
this.addChild(currentMc);
}

友情提示:
以上使用的是ActionScript 3.0。千万不要用在ActionScript 2.0的文件里。
大屁鹌子
2014-09-10 · 超过132用户采纳过TA的回答
知道小有建树答主
回答量:361
采纳率:0%
帮助的人:181万
展开全部
设置库的链接,然后需要的时候new一个出来,不用了删掉。

比如2个影片剪辑设置链接为“mc1”和“mc2”:
var currentMc:MovieClip;
btn1.addEventListener(MouseEvent.CLICK,btnClick);
btn2.addEventListener(MouseEvent.CLICK,btnClick);
function btnClick($ev:MouseEvent):void{
if(currentMc) removeChild(currentMc);

var c:Class=getDefinitionByName($ev.target==btn1?"mc1":"mc2");

currentMc=new c();

addChild(currentMc);

currentMc.play();

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式