AS3如何在有多个影片剪辑时使一次只能点击1个影片剪辑

2024-03-07

好的,我有一个页面,上面有 5 个影片剪辑/按钮。当您将鼠标悬停在每一个上时,它们会亮起(OVER 状态),当您单击它们时,它们会展开(DOWN 状态)。问题是,如果您展开了多个影片剪辑(处于“向下”状态),它们会重叠并且看起来很糟糕。我想对它们进行编码,以便一次只能扩展 1 个。我怎样才能做到这一点?我想我需要在每个按钮上有一个 IF 语句,例如“如果任何其他影片剪辑处于 DOWN 状态,则禁用此影片剪辑的 DOWN 状态,如果没有其他按钮处于 DOWN 状态,则启用此影片剪辑的 DOWN 状态”或类似的内容但我不知道怎么写。请帮忙。以下是其中一个影片剪辑的代码:

Step0btn.stop();

Step0btn.addEventListener(MouseEvent.MOUSE_DOWN, onStep0Press);
Step0btn.addEventListener(MouseEvent.MOUSE_OVER, onStep0Over);
Step0btn.addEventListener(MouseEvent.MOUSE_OUT, onStep0Out);

function onStep0Press(event:MouseEvent):void
{
    // toggle between frame 1 and 3 on button press
    Step0btn.gotoAndStop(Step0btn.currentFrame == 3 ? 1 : 3);
}

function onStep0Over(event:MouseEvent):void
{

    if (Step0btn.currentFrame != 3)

    {

        Step0btn.gotoAndStop(2);

    }

}

function onStep0Out(event:MouseEvent):void
{
    // only switch back to UP state if the button is "pressed"
    if (Step0btn.currentFrame != 3)
    {
        Step0btn.gotoAndStop(1);
    }
} 

好的,我们已经解决了重叠影片剪辑的问题,但是在影片剪辑的“向下”状态下,另一个影片剪辑具有以下代码:

Step0img.stop();

Step0img.addEventListener(MouseEvent.MOUSE_DOWN, onStep0imgPress, false, 999);

function onStep0imgPress(event:MouseEvent):void
{
    Step0img.gotoAndStop(2);
    event.stopImmediatePropagation();
}

这使我可以单击嵌套的影片剪辑,甚至无需触发鼠标按下并关闭展开的影片剪辑。我认为禁用 MOUSECHILDREN 可能也会禁用此功能。


这是可以完成的一种方法:将上面的代码替换为按钮时间线上的此代码(或者更好的是创建一个类文件,并让每个按钮都将其作为基类,就像我的回答一样)这个问题 https://stackoverflow.com/questions/23351096/as3-multiple-rollover-objects/23355106#23355106- 那么您只需要拥有所有按钮共享的一个代码文件)

stage.addEventListener(MouseEvent.MOUSE_DOWN,globalMouseDown,false,0,true); //add a global mouse listener

function globalMouseDown(e:Event):void {
    //find out if the target is a descendant of this, if not, then something else was clicked.
    var tmpParent:DisplayObject = e.target as DisplayObject;
    while(tmpParent && tmpParent != stage){
        if(tmpParent == this) return;
        tmpParent = tmpParent.parent;
    }

    //something else was clicked that wasn't this, so go to the up state
    gotoAndStop(1);

}

stop();

addEventListener(MouseEvent.MOUSE_DOWN, onPress);
addEventListener(MouseEvent.MOUSE_OVER, onOver);
addEventListener(MouseEvent.MOUSE_OUT, onOut);

function onPress(event:MouseEvent):void
{
    // toggle between frame 1 and 3 on button press
    gotoAndStop(Step0btn.currentFrame == 3 ? 1 : 3);
}

function onOver(event:MouseEvent):void
{

    if (currentFrame != 3)
    {
        gotoAndStop(2);
    }
}

function onOut(event:MouseEvent):void
{
    // only switch back to UP state if the button is "pressed"
    if (currentFrame != 3)
    {
        gotoAndStop(1);
    }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AS3如何在有多个影片剪辑时使一次只能点击1个影片剪辑 的相关文章

  • Flash AS3 -domain.com/crossdomain.xml 和安全错误

    在代码中 我在 URLLoader 之前使用它 swf 将与许多不同的域一起使用 并且这将及时更改 Security allowDomain In http domain com crossdomain xml http domain co
  • actionBar后退按钮和android后退按钮的区别

    actionBar后退按钮和android后退按钮有什么区别 因为看起来 ActionBar 后退按钮是通过以下方式调用的 ActionBar actionBar getSupportActionBar actionBar setDispl
  • Android - 带图像的按钮 - 禁用按钮时图像变暗

    在 Android 中 我有一个包含图像和文本的按钮 禁用该按钮时 文本会自动变灰 但图像保持不变 当按钮被禁用时是否可以使图像变暗而不需要两个单独的图像 在您的代码中 您还可以使用彩色滤光片 http developer android
  • 在 Flex 中隐藏右键单击上下文菜单中的默认选项

    我正在开发一个 Flex 应用程序 我想为其添加一个上下文菜单 我用这段代码得到了它 var myMenu ContextMenu new ContextMenu myMenu hideBuiltInItems var defaultIte
  • Javascript 通过ExternalInterface 来刷新

    我想知道是否有人可以查看我的代码 我正在尝试使用以下代码将虚拟变量从 javascript 传递到 actionscript 3 HTML
  • 使用 MP4 编码在 Flash 中流式传输网络摄像头视频

    我正在开发的 Flash 应用程序的功能之一是能够将网络摄像头流式传输给其他人 我们只是使用 Flash 中的内置网络摄像头支持并通过 FMS 发送它 有些人要求更高质量的视频 但我们已经在 Flash 中使用了最高质量设置 将质量设置为
  • 要在应用为主题的按钮样式中使用layout_marginLeft?

    我使用了一个属性layout marginLeft 30dip 采用为按钮定义的样式 当我为每个按钮单独应用此样式时 左边距将根据我的需要放置 但后来我定义了一个主题 将按钮样式分配给属性android buttonStyle并将其应用到我
  • 使用 Javascript 自定义上下文菜单?

    有没有办法使用 Javascript 将自定义字段添加到内置浏览器上下文菜单中 我知道 flash actionscript 可以做到这一点 他们是如何做到的 示例 右键单击http josephjewell com http joseph
  • 多个提交按钮

    我在 HTML 和 PHP 中遇到多个提交按钮时遇到问题 我尝试为基于 Web 的计算器编写 GUI 代码 这确实很容易 但是 php 中的函数并不那么容易 所以我有这个简单的 GUI 有 6 个提交按钮
  • 如何将按钮放置在 UITableView 上方(而不是导航栏中)?

    I am new to iphone programming I am learning uitableview at the moment I need to create an app that has buttons above ta
  • ActionScript 2 移动对象

    我对 ActionScript 知之甚少 我有一个电影剪辑 我希望当我按下按钮 按钮或影片剪辑 时它沿 x 轴移动我不知道要使用什么代码 因为它需要是 Action Script 2 是否有教程或其他东西可以完成此任务 我找到了一个教程 当
  • ReferenceError:错误#1069:属性 box_mc_0

    我试图使用循环隐藏舞台上的影片剪辑 但在发布它时出现以下错误 这只是这个概念的一个示例 var q for q 0 q lt 3 q stage box mc q visible false 错误消息 参考错误 错误 1069 财产box
  • 如何在 ItemRenderer 内使用数据网格范围外的变量?

    我使用将项目数组绑定到数据网格ItemRenderer 我用data变量来控制可绑定数据 我也有someComponentVariable需要插入到每一行中 但它是在组件范围内声明的 因此数据网格似乎无法重新识别它 编译错误 我如何使用这个
  • MultiDataTrigger 使用 OR 而不是 AND

    我正在尝试设置多个DataTriggers on my Button 我做了一些研究发现MultiDataTrigger允许您执行此操作 我想要Visibility我的财产Button如果设置为 falseCCTVPath string E
  • Bootstrap:如何将按钮组对齐在中心(垂直)

    在下面的代码中
  • 垃圾收集最佳实践

    如果您要从显示列表中删除某个 MovieClip 并且该 MovieClip 又具有具有自己的事件侦听器的子 MovieClip 则是否有必要从子 MovieClip 中删除所有侦听器 或者只是直接从显示列表中删除的父级 MovieClip
  • SwiftUI 键盘工具栏有条件

    不确定这是否是一个错误或者我是否做错了什么 但如果我使用 toolbar ToolbarItemGroup placement navigationBarLeading if isFocused zipCode Text Test 当等于
  • ActionScript Workers 可以用于在单独的线程中播放/生成声音吗?

    我很新ActionScript 工作者 但我想知道这是否可能 从我读到的来看 ActionScript 工作者 ASW 就像单独的线程 可以执行更多 CPU 密集型计算 而无需中断主线程 正在执行主 SWF 文件 我真正看到的唯一一个例子是
  • 闪存应用程序的国际化

    我正在使用 Flash 应用程序 非 Flex 并且我想支持国际化 在flex中有一个很好的抽象ResourceManager 您可以在其中为每个语言环境提供资源包 动作脚本有等效的吗 怎么样全球化 http www servebox or
  • 移动影片剪辑时的视觉错误

    在我尝试创建一个简单的类似乒乓球的游戏时 我遇到了一个非常奇怪的 有时甚至是严重的视觉错误 当我设置球 Flash CS 5 5 库 MovieClip 以相当快的速度在屏幕上移动时 我注意到有时球的边缘会在其移动方向上被短暂切断 当它发生

随机推荐

  • 移动网络应用程序可以访问设备的电话号码吗?

    例如 移动 Safari 我可以获得设备的电话号码吗 据推测 这会提示用户是否允许 就像位置一样 在某些情况下 该号码可能是通过网络运营商本身的标头发送的 即您不会通过 wifi 看到它 不同的运算符使用不同的标头 e g X UP CAL
  • 打字稿导入导出中持续出现未定义错误

    在多个文件中已经有很多关于打字稿的问题 例如 这个 打字稿导入 导出 https stackoverflow com questions 72692423 typescript import export 有趣的问题和答案 我简化并测试了它
  • 在 SQL Server 中使用链接服务器有哪些缺点?

    是否存在任何巨大的性能问题或安全问题 使用 SQL Server 2005 及更高版本 服务器迁移更加复杂 为多跳设置安全性可能很棘手 非 SQL Server 需要安装本地驱动程序 Sybase DB2 等 集群 异地灾难恢复 注册表项
  • 如何将healpy地图转换并保存到不同的坐标系?

    我有一张带有银河坐标的healpix 地图 我想将该地图转换为赤道坐标系 我知道我可以使用 mollview 函数在赤道坐标中绘制地图 你有什么办法保存这样的转换后的地图吗 谢谢 维努 以下函数更改地图的坐标系 def change coo
  • Symfony2 的 role_hierarchy

    我的 role hierarchy 有一个大问题 security role hierarchy ROLE ADMIN ROLE USER ROLE AUTHOR ROLE MODERATOR ROLE SUPER ADMIN ROLE A
  • 在 Linq to Sql 中返回多列?

    如何在 C 中使用 linq to sql 返回多列 我试图用以下方式结束我的查询 select new A Product A Qty 但这会返回一些匿名类型 我不确定该怎么办 如何返回它以及如何从中提取信息 我想把它放在某种数组中 th
  • 右对齐 Facebook 点赞按钮 iFrame 的内容?

    我需要右对齐 Facebook Like 按钮的内容 以便它们始终位于其设置的 宽度 的骑行侧 我可以在 Firebug 中通过将表格设置为 float right 来做到这一点 但如果我在 CSS 中定义该值 它似乎不起作用 Here s
  • 在 C# 中使用 jpegtran、jpegoptim 或其他 jpeg 优化/压缩

    我在网上商店收集了 100 种 也许是 1000 种 产品 其中每种产品都有 10 30 张图片 我需要在不损失图像质量的情况下尽可能优化图像的文件大小 我没有直接使用 jpegtran jpegoptim 或任何其他 jpeg 优化器 但
  • numpy 中的双梯形积分

    我有一个二维函数 f x y exp y x 我想使用 NumPy trapz 计算二重积分 int 0 10 int 0 10 f x y dx dy 经过一番阅读后 他们说我应该重复 trapz 两次 但它不起作用 我尝试过以下方法 i
  • 如何在 Cocoa 中创建并显示自定义工作表? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是新手问题 如何在 Cocoa 中创建并显示自定义工作表 就像 Safari 中的 添加书签 表 见下文 任务涉及哪些步骤 每一步如
  • 如何测试你的应用程序被杀死并重新启动?

    我想测试我的应用程序被杀死并在非主要活动中重新启动的情况 假装用户该应用程序只是恢复了 有人知道怎么做吗 我发现的所有想法都不起作用 因为它们都杀死了应用程序 然后该应用程序在主要活动中恢复 我实际上发现这更方便 您的应用程序在上一个活动中
  • 更改 Bazel 中的测试执行目录?

    我有一个简单的 Bazel 项目布局 如下所示 foo BUILD bazel testdata a txt test sh WORKSPACE 测试检查a txt exists foo test sh bin bash FILE foo
  • 如何向表中添加列?

    使用 react native sqlite storage 该应用程序已经在 Google Play 上上线 我想向现有数据库表添加两列 这样应用程序就不会因现有用户而崩溃 当您将列添加到现有表时 您会收到类似错误 error messa
  • 对 SBCL 中的“ql:quickload”和可执行脚本感到困惑

    我一直在尝试在我的可执行脚本中使用 Quicklisp 包 一个 简单的 工作示例是 usr bin sbcl script eval when compile toplevel load toplevel execute ql quick
  • 如何检查php脚本是否在本地服务器上运行?

    是否可以检查网站 php 是在本地运行还是在托管服务器上运行 如果网站在本地运行 我想启用一些日志 并且我不希望这些日志出现在在线网站上 我可以设置一个变量 local 1 但我必须在上传之前更改它 有没有办法自动执行此任务 本地服务器 W
  • 对于属性上的 NOTIFY 信号,如果我给它一个参数,会有什么区别?

    假设我有一个如下所示的类 class Something QObject Q PROPERTY int something READ getSomething NOTIFY somethingChanged signals void som
  • 更改 AngularJS ngTrim 行为

    我正在使用 AngularJS 版本 1 5 6 我有一个带有大量文本区域和文本输入的大型应用程序 我今天发现了一个错误 该错误是由 AngularJS 修剪文本类型输入的默认行为引起的 我想将此行为从默认修剪更改为默认不修剪 有没有一种简
  • 如何仅使用按位运算符实现 Bitcount?

    任务是仅使用按位运算符实现位计数逻辑 我让它工作得很好 但我想知道是否有人可以建议一种更优雅的方法 仅允许按位运算 没有 如果 因为 等 int x 4 printf d n x 0x1 printf d n x gt gt 1 0x1 p
  • 查找我的应用程序中的所有 mongoid 模型名称

    有没有办法找到我的 Rails 应用程序中的所有 Mongoid 模型名称 我可以通过获取 app models 文件夹中的所有文件来找到所有模型 但我特别想要 mongoid 模型名称 您可以在 Mongoid 3 1 及更高版本中执行此
  • AS3如何在有多个影片剪辑时使一次只能点击1个影片剪辑

    好的 我有一个页面 上面有 5 个影片剪辑 按钮 当您将鼠标悬停在每一个上时 它们会亮起 OVER 状态 当您单击它们时 它们会展开 DOWN 状态 问题是 如果您展开了多个影片剪辑 处于 向下 状态 它们会重叠并且看起来很糟糕 我想对它们