QT开发中文网

var copiedClip: MovieClip = null; // 用于存储被复制的影片剪辑 var originalClip: MovieClip = null; // 用于存储原始影片剪辑 var copiedClip:MovieClip = originalClip.duplicateMovieClip("copied_clip", this.getNextHighestDepth()); // 循环遍历9个影片剪辑 for (var i = 1; i

这段代码中有重复定义变量copiedClip的问题,应该去掉第二次的定义。同时,在将复制后的影片剪辑添加到舞台上时,应该把复制后的影片剪辑对象作为第一个参数传入attachMovie方法中。

修改后的代码如下所示:

var copiedClip: MovieClip = null; // 用于存储被复制的影片剪辑
var originalClip: MovieClip = null; // 用于存储原始影片剪辑

// 循环遍历9个影片剪辑
for (var i = 1; i <= 9; i++) {
    var clip: MovieClip = this["tu" + i];

    // 设置鼠标左键抬起事件处理程序
    clip.onMouseUp = function() {
        if (copiedClip == null) {
            originalClip = this;
            copiedClip = this.duplicateMovieClip("copy", this.getNextHighestDepth()); // 复制当前影片剪辑
            copiedClip.startDrag(); // 开始拖动

            // 设置全局onMouseMove事件处理程序,跟随鼠标移动
            _root.onMouseMove = function() {
                if (copiedClip != null) {
                    copiedClip._x = _root._xmouse;
                    copiedClip._y = _root._ymouse;
                }
            };
        }
    };

    // 设置鼠标右键按下事件处理程序
    clip.onMouseDown = function() {
        if (copiedClip != null && this != originalClip) { // 如果当前有已复制的影片剪辑且不是原始影片剪辑
            copiedClip.removeMovieClip(); // 删除已复制的影片剪辑
            copiedClip = null;
       } else if (copiedClip == null && this == originalClip) { // 如果当前没有已复制的影片剪辑且是原始影片剪辑
   		 var i: Number = parseInt(this._name.substr(2));  // 获取该对象在数组中的索引位置 
    	 var newClip: MovieClip = this.duplicateMovieClip("tu" + i, this.getNextHighestDepth());  //创建新的副本替换当前已删除的对象 
    	 removeMovieClip(this);
    	 originalClip = newClip;
       }
    };
}

// 设置全局onMouseDown事件处理程序,停止拖动并放置复制后的图片
_global.onMouseDown = function() {
    if (copiedClip != null&& Key.isDown(Key.CONTROL)) {
        copiedClip.stopDrag();// 停止拖动

        // 恢复全局onMouseMove事件处理程序为null
        _root.onMouseMove = null;

        // 将复制后的图片放置在当前鼠标位置,并清除对被复制的影片剪辑和原始影片剪辑的引用
        copiedClip._x = _root._xmouse;
        copiedClip._y = _root._ymouse;
		
		// 将复制后的影片剪辑添加到舞台上
        var emptyMC:MovieClip = this.createEmptyMovieClip("empty_mc", this.getNextHighestDepth());
        emptyMC.attachMovie(copiedClip, "copied_clip", emptyMC.getNextHighestDepth());
		
		copiedClip = null;
		originalClip = null;
		trace("onMouseDown event triggered");
    }
};

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1463

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?