为动态创建MovieClip指定鼠标事件

创建|动态|鼠标

如何为动态创建的MovieClip指定鼠标事件

1. 正常情况下,可以直接通过设置事件处理器指定事件,下面是一个例子

imageMc = mainContainer.createEmptyMovieClip("imageMc",1);
with (imageMc)
{
    moveTo(0,0);
    lineStyle(1,0xffff00);
    beginFill(0x00ff00,60);
    lineTo(400,0);
    lineTo(400,100);
    lineTo(0,100);
}
imageMc.onRelease = function(){
    trace("aaa");
}

2. 如果这个MovieClip创建以后,执行了LoadMovie操作,比如,加载了一个图片,上面的方法就无效了。
:用其他通用的事件处理器绑定方法,也会无效的,在经过n次的失败后和一番调查后,终于在flash的帮助里发现了一条信息)

“将事件处理函数和 loadMovie(MovieClip.loadMovie 方法)一起使用,其结果是无法预知的。如果使用 on() 将事件处理函数附加到按钮,或是使用诸如 onPress(MovieClip.onPress 处理函数)的事件处理函数方法创建动态处理函数,然后调用 loadMovie(),则在加载新内容之后,事件处理函数将不再可用。然而,如果使用 onClipEvent 处理函数或 on 处理函数将事件处理函数附加到影片剪辑,然后对该影片剪辑调用 loadMovie(),则在加载新内容之后,事件处理函数将仍然可用。”

真是无语了。Flash官方一面鼓励开发者,不要将代码写到对象里,应该写到外部ActionScript文件里。可是,onClipEvent()和 on()就是典型的将代码写到对象里,在Flash的另一页帮助里,很清楚的抵制这种写法。那么如果,在纯.as文件里,还有办法给LoadMovie以后的MovieClip添加事件么。

 又经过一番调查,终于发现可以用以下方法解决,既可以解决这个问题,解决方式也比较优雅,就是借助MovieClipLoader.

imageMc = mainContainer.createEmptyMovieClip("imageMc",1);
//imageMc.loadMovie("E:\\1.jpg");        //不能用这种方法
var loader:MovieClipLoader = new MovieClipLoader();
   loader.loadClip("E:\\1.jpg", imageMc);
   var mclListener:Object = new Object();
   mclListener.onLoadInit = function(evt:MovieClip) {
      evt.onPress = function() {
         trace("bbb");
      }
   }
loader.addListener(mclListener);   

在mclListener的evt对象里,设置onPress事件。问题解决!

时间: 2024-10-31 21:39:33

为动态创建MovieClip指定鼠标事件的相关文章

MFC中动态创建控件以及事件响应实现方法_C 语言

本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示. 静态控件不需要调用Create()

js实现动态创建的元素绑定事件_javascript技巧

新创建的元素用传统的办法无法绑定,需要用live方法. 例: $('.rule').live('mouseover', function () { $(this).addClass("cancelable"); 以上这篇js实现动态创建的元素绑定事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js javascript 动态绑定.动态

动态创建控件支持事件响应并可保存与读取

VC++6.0中创建动态控件是比较偏离基础的知识,也有一定的难度.它的完整功能是要动态创建控件后再动态响应控件中的事件,两者全部做到才算完整. 这里我将展示一个完整的动态控件示例,它可以动态创建控件,然后再动态响应控件事件,并可以保存控件信息至ini配置文件,然后再根据ini文件读取出控件信息来动态创建控件.相信它能够解决你在动态控件中所遇到的许多问题. 当然,动态控件的方法有许多种,我展示的只是给我认为较好的. 这里以VC++6.0创建对话框工程为例,添加菜单,分别添加子项按钮,文本框,标签.

jQuery on()方法绑定动态元素的点击事件无响应的解决办法_jquery

$('#check_all').on('click' , function(){ alert(1); }); $("#yujinlist").append(html); count++; } 以上代码执行时,点击#check_all时,alert一直没反应,后在网上查资料时,才知道on前面的元素也必须在页面加载的时候就存在于dom里面, 那原话是这样的: 支持给动态元素和属性绑定事件的是live和on,其中live在JQUERY 1.7之后就不推荐使用了.现在主要用on,使用on的时候

WinForm企业应用框架设计【三】框架窗体设计;动态创建菜单;

要不是我的朋友乔乔==乔不死跟我聊到领域驱动设计~ 我也不会发现第一篇中关于"充血实体"的错误说法(至少~我写文章的时候~内心的想法是错的~) 我个人不是很喜欢领域驱动设计~感觉这种思路(我们暂且叫它思路~虽然它有一些既有的原则和模式) 重点要求架构师深入到业务领域中去~ 但是在国内往往很难真正的与领域专家做深入交流~ 架构师划分的领域模型和聚合往往与真实的情况差别较大~ 即使划分的较好~新的业务和变化的业务也另设计师非常头疼~ 另外 设计师很难将庞大复杂的业务抽象成领域模型 往往需要

js在ie动态创建iframe的问题分析

问题描述 以下代码,一般用于在当前页无刷新提交表单,其原理是把表单的target设为页面上某个iframe的id,使该iframe成为提交的目标,避免新开窗口或跳转.但这段代码在IE 6.7下无效.  代码如下 复制代码 <form action="http://www.baidu.com/" method="post" target="testframe">     <input type="submit"

jQuery 绑定事件到动态创建的元素上的方法实例_jquery

在进入主题之前,我们先来看一个前台页面经常用到的功能:点击页面输入框时自动选择其中文本. 很容易想到利用输入框的focus事件,当输入框获得焦点时,再调用jQuery的select()方法. Okay,想法很简单,逻辑似乎也无错.具体我们来看一下现实到底能不能实现. 1.页面构造个表单,放上几个输入框.代码看起来是这样子的. 复制代码 代码如下: <form action="/" method="post">        <table>  

jQuery 绑定事件到动态创建的元素上

  在进入主题之前,我们先来看一个前台页面经常用到的功能:点击页面输入框时自动选择其中文本. 很容易想到利用输入框的focus事件,当输入框获得焦点时,再调用jQuery的select()方法. Okay,想法很简单,逻辑似乎也无错.具体我们来看一下现实到底能不能实现. 1.页面构造个表单,放上几个输入框.代码看起来是这样子的. <form action="/" method="post"> <table> <tr> <td

泛型-c# 动态创建控件 及触发事件 即插即用。

问题描述 c# 动态创建控件 及触发事件 即插即用. 各大大好,初来驾到,请大家多多关照,问题是这样的.需求 :需要动态添加控件.然后需要项目做出来后要实现"即插即用"的特点.(即插即用:我们要是更新一个功能,用户只要更新这个控件就可以直接使用,而不用更新整个客服端)问题 :知道要用泛型来写,但是看了一天了,不知道如何下手,现已写了如下代码:using System;using System.Collections.Generic;using System.Linq;using Sys