Actionscript 3 和动态蒙版

2024-02-10

我有一个容器 MovieClip,用作我需要遮盖的内容区域。当我使用形状在此容器内创建蒙版时,我似乎无法与我在此处创建的其他容器的内容进行交互,例如按钮等。

这就是我在代码中所做的(我省略了所有导入等):

class MyContainer extends MovieClip
{
   protected var masker : Shape = null;
   protected var panel : MyPanel = null;

   public function MyContainer()
   {
      this.masker = new Shape();
      this.masker.graphics.clear();
      this.masker.graphics.beginFill( 0x00ff00 );
      this.masker.graphics.drawRect(0, 0, 1, 1);  // 1x1 pixel.
      this.masker.graphics.endFill();
      addChild( this.masker );

      this.panel = new MyPanel();  // has buttons and stuff.
      addChild( this.panel );

      this.mask = this.masker;
   }

   // called by it's parent when the stage is resized.
   public function resize( width : Number, height : Number ) : void
   {
      // set the mask to half the size of the stage.
      this.masker.width  = width  / 2;
      this.masker.height = height / 2;

      // set the panel to half the size of the stage.
      this.panel.resize( width / 2, height / 2);
   }
}

当我将蒙版(形状)添加到显示层次结构时,我无法再与 MyPanel 中定义的任何按钮进行交互。然而,not将蒙版添加到显示层次结构确实可以让我与 MyPanel 上的内容进行交互,但蒙版的大小/位置不正确。我猜当蒙版没有添加到显示层次结构中时,它位于电影的左上角(但我无法证明这一点)。

如何正确设置蒙版尺寸/位置并让用户与 MyPanel 中的按钮进行交互?


this.masker.mouseEnabled = false; //set on this.masker

那应该有效。现在,它正在拦截您的事件,然后再将其发送到容器中的其他任何内容。不是 100% 确定,但我相信面具会放在容器顶部。另一种选择是向 DisplayList 底部的 MyContainer 添加另一个屏蔽子项,并将面板添加为其同级。不过,您仍然需要在蒙版 sprite/mc 上将 mouseEnabled 和 mouseChildren 设置为 false。

package
{
    import flash.display.Shape;
    import flash.display.Sprite;

    public class MyContainer extends Sprite
    {
       protected var masker : Shape = null;
       protected var panel:MyPanel;

       public function MyContainer()
       {

          this.masker = new Shape();
          this.masker.graphics.clear();
          this.masker.graphics.beginFill( 0x00ff00 );
          this.masker.graphics.drawRect(0, 0, 1, 1);  // 1x1 pixel.
          this.masker.graphics.endFill();
          addChild( this.masker );

          this.panel = new MyPanel();
          this.addChild(panel);
          this.mask = this.masker;
       }

       // called by it's parent when the stage is resized.
       public function resize( width : Number, height : Number ) : void
       {
          // set the mask to half the size of the stage.
          this.masker.width  = width  / 2;
          this.masker.height = height / 2;

          // set the panel to half the size of the stage.
       }
    }
}

-

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class MyPanel extends Sprite
    {
        public function MyPanel()
        {
            this.graphics.beginFill(0xFF0000)
            this.graphics.drawRect(0,0,10,10);
            this.addEventListener(MouseEvent.MOUSE_OVER, this.handleMouseOver)
            this.addEventListener(MouseEvent.MOUSE_OUT, this.handleMouseOut)
        }

        public function handleMouseOver(event:Event):void
        {
            this.graphics.clear();
            this.graphics.beginFill(0x00FF00)
            this.graphics.drawRect(0,0,10,10);
        }

        public function handleMouseOut(event:Event):void
        {
            this.graphics.clear();
            this.graphics.beginFill(0xFF0000)
            this.graphics.drawRect(0,0,10,10);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Actionscript 3 和动态蒙版 的相关文章

  • 如何保护swf文件不被反编译?

    我正在使用 Flex 框架从事重要项目 我想对我的算法和代码保密 是否有可能以某种方式保护 swf 文件不被反编译 我不希望有人使用 flash 反编译器提取我的代码 Thanks 这很简单 只需将其保存在您的 PC 上 不要将其放在网络上
  • 需要澄清应用程序域

    我需要对这个主题进行一些澄清 因为我刚刚遇到将 swf 加载到重用加载器对象中的问题 假设我有 3 个 SWF 主文件 swfchildA swfchildB swf Main swf 中有一个可重用的加载程序对象 myloader loa
  • 用于通过 Apple 登录的自定义圆形按钮

    我遵循 Apple 的指南来实施 使用 Apple 登录 按钮 苹果在文档中表示 也可以仅使用徽标来创建 使用Apple登录 的自定义按钮 您也可以更改图像的形状以具有圆形按钮 为了能够编辑图像 它还提供插入蒙版 但我不明白我们必须为按钮或
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • 从另一个域加载外部图像

    是否可以从另一个域加载图像 jpg png gif 并操作像素 我想当下载 复制图像时它就在我的域中 使用加载器并将内容添加到图像组件时 我在调试器中收到错误 我想这里有一些跨域策略在起作用 但在继续之前我需要更确定它是如何工作的 我想 如
  • JavaScript 动态变量名称[重复]

    这个问题在这里已经有答案了 好吧 我想在用户单击时创建变量 每次单击都会添加一个新变量 我目前正在使用 jquery 和 javascript 我无法在服务器端执行此操作 这必须在浏览器中完成 newCount document getEl
  • Jquery 单击功能不适用于动态元素

    我在用 each使用每个数组对象创建按钮 我还尝试给每个按钮一个特定的 id 这样我就可以执行单击事件以进一步编码 但现在我不知道为什么所有按钮都不起作用 我错过了一些代码吗 var questlist startdate 2015 01
  • 如何使用 PHP 创建动态页面标题

    大家好 我想知道是否有人可以帮助解决这个 PHP 问题 是否可以使用 H2 标记中的文本并使用它来动态填充页面标题 我还希望能够使用相同的技术将 H2 文本添加到元描述中 有人可以帮忙吗 如果您的 h2 文本是动态创建的 那么网页的其他部分
  • 底部带有三角形的蒙版图像

    我正在尝试找出如何最好地掩盖具有像这样的角度形状的 div 如果在这种情况下顶部 div 将是背景图像 并且两个 div 都是 100 宽度 我看过很多关于如何用圆形遮罩图像的教程 但没有关于如何遮罩红色区域等 div 边框的教程 我知道一
  • 在类之间调度事件

    我有一个自定义事件类 public class FFTDrawEvent extends Event public static const DRAW EVENT String drawEvent private var param Arr
  • Nest Elastic - 构建动态嵌套查询

    我必须使用 Nest 查询嵌套对象 但是查询是以动态方式构建的 下面的代码演示了以静态方式对嵌套 书籍 进行查询 QueryContainer qry qry new QueryStringQuery DefaultField name D
  • javascript - 动态变量

    您好 我正在尝试创建动态变量 但它说 变量 v0 到 v5 未定义 td each function i eval var v i this html 任何帮助将不胜感激 这听起来是个坏主意 你有什么理由不能这样做吗 var tdHtml
  • Flash 照片上传 - 从网络摄像头拍摄照片 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否有其他方法可以释放 C 中动态分配的内存 - 不使用 free() 函数?

    我正在为测试而学习 我想知道这些是否等同于 free ptr malloc NULL calloc ptr realloc NULL ptr calloc ptr 0 realloc ptr 0 据我了解 这些都不起作用 因为 free 函
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • 在 ActionScript 3 中在形状上绘制文本

    有没有办法仅使用 ActionScript 在 DisplayObject 或 Shape 中绘制文本 我在网上找到的唯一方法是创建 TextField 但我无法将 TF 添加到 DisplayObject 或 Shape Edit 解决了
  • 在 Swift 中将动态 Int 变量从一个类传递到另一个类

    我是 swift 2 的新手 我陷入了将变量从一个类传递到另一个类的过程中 我有一个类 GameScene 我有一个公共变量score并且在更新功能中不断更新 我想发送score两个节点相互碰撞时的值 一旦它发生碰撞 我就会使用 mainv
  • 将 < 或 > 运算符作为参数传递给函数?

    我的函数里面有一个if 像这样的声明 if passedValue lt staticValue 但我需要能够传递一个参数来指示 if 表达式是像上面那样还是 if passedValue gt staticValue 但我真的无法通过 l
  • Flash Builder 条件编译变量

    我正在使用 Flash Builder 4 5 并且我想在调试和发布版本之间使用条件编译 我了解如何使用条件编译以及如何定义编译器常量 我需要的是 IDE 在调试和发布版本之间设置的预定义常量 一种在调试和发布版本之间为编译器指定不同参数的
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同

随机推荐

  • 分析 pyomo 中的解决方案 (.sol) 文件

    我在机器 1 中有一个 pyomo 模型 在机器 2 中有 CPLEX 求解器 我转换 pyomo 模型 ConcreteModel 变成problem lp带有函数的文件model write problem lp 在机器 1 中 然后我
  • jQuery 在两个类之间滚动切换

    默认情况下 我有一个具有红色背景颜色的导航栏 我想要做的是 当用户向下滚动超过 100px 将背景更改为蓝色 并且如果他返回到 0px 将背景更改为其默认状态 例如 我想通过在两个类之间切换来做到这一点 div class navigati
  • perl + 如何声明数组

    以下脚本 test pl 在 myfile txt 文件的 first line 1 和 second line 1 之间附加 insert 1 文本 并将输出发送到 output txt 但如果我将数组声明为 my first line
  • 尝试在flutter中创建不同语言的pdf

    我想在 PDF 中打印印地语 我也尝试过使用 Google 的 Raleway Regular ttf 字体 但也没有成功 final font await rootBundle load fonts ARIAL TTF final ttf
  • 我的 SQLite 语法错误

    SQLite 新手 所以我不知道我做错了什么 我刚刚收到一条错误消息 SQLSTATE HY000 General error 1 near CREATE syntax error 这是我的 SQL CREATE TABLE users i
  • 如何转置 MySQL 行和重复列标题?

    我有一个 mysql 表 如下所示 id group id item code item label item detail item score 1 10 BLU123 Blue 123 Blah blah 123 3 2 10 BLU1
  • 我可以让实时 PHP 数据显示在 jquery 对话框中吗?

    我正在尝试将两种想法结合起来 但我不确定它们是否相互兼容 想法一 让 php 脚本运行命令 例如 ping 并在 Web 浏览器中提供命令的实时结果 想法2 出现一个 jQuery 对话框 打开时运行 php 脚本并在对话框中提供实时结果
  • 如何从 Diego 上的 Cloud Foundry 提取文件

    我想检索一些应用程序的日志 我发现这个命令cf file不再可用 该插件cf download 不适用于迭戈建筑 https github com ibmjstart cf download issues 12 有没有办法通过 CLI 其他
  • 检查静态库的iOS部署目标

    我有很多静态库 比如libBlah a With file我可以检查支持的架构的工具 arm64 或 i386 有没有工具可以检查iOS Deployment Target静态库的 您可以使用otool检查库文件 通过一些实验我发现标志 l
  • 小米等智能手环官方SDK/API

    我们想要开发一个 Android 应用程序来支持 MiBand 和其他智能手环 我们希望通过 BLE 从智能手环获取心率等信息 并将其显示在移动应用程序中 我们如何从设备获取这些信息 有官方的SDK或者API吗 还有一个 huami tec
  • Hibernate/JPA 中批量插入 CollectionTable 元素

    我们使用 Hibernate 4 2 作为 JPA 2 0 实体的支持库 我们有一个如下所示的实体 Entity public class MyEntity ElementCollection MapKeyColumn name key C
  • 为什么我的交易没有升级为 DTC?

    我的机器上禁用了 DTC 据我了解 这段代码应该失败 因为它在同一事务中使用两个数据上下文 那么 它为什么有效呢 注意 我使用 NET 3 5 和 NET 4 0 尝试过此操作 using TransactionScope transact
  • Python lxml解析svg文件

    我正在尝试解析 svg 文件http kanjivg tagaini net http kanjivg tagaini net 但我无法成功提取里面的信息 Edit 1 完整文件 http www filedropper com 0f9ab
  • IBM data studio 未连接到本地 DB2 数据库

    我已经在本地 Ubuntu 12 04 机器上安装了 DB2 10 5 版本 现在我需要一个图形用户界面 我已经尝试过 squirrel sql 和 Db Visualizer Db Visualizer 为我提供了仅查看的数据库结构 而
  • 一个项目有两个 gitlab-ci 运行程序

    我曾经在github上有一个项目travis https travis ci org and an appveyor https www appveyor com 已配置集成服务 因此我能够确保我的项目在两个平台上都可以正常编译OSX an
  • 使用协程API获取实体

    最好的使用方法是什么coroutines使用 LiveData 从数据库中选择一些数据Room 这是 My Dao 课程 暂停选择 Dao interface UserDao Query SELECT from user table WHE
  • 如何使用 --split-debug-info=/<项目名称>/<目录>

    下面的命令中 如何使用 split debug info
  • C++ 对齐的未来:按值传递?

    阅读 Eigen 库文档 我注意到有些对象不能按值传递 http eigen tuxfamily org dox TopicPassingByValue html C 11 中是否有任何开发或计划开发可以安全地按值传递此类对象 另外 为什么
  • SharedPreferences 保存一个按钮,单击它后将其更改为不可见,并让另一个按钮出现

    我是新来的 我是法国人 所以也许我的英语不是很好 对此感到抱歉 我是 Android 开发的初学者 我必须创建一个应用程序来完成我的学习 我有一个名为 VoeuxActivity java 的活动编号 1 有 8 个按钮 和 8 个 Tex
  • Actionscript 3 和动态蒙版

    我有一个容器 MovieClip 用作我需要遮盖的内容区域 当我使用形状在此容器内创建蒙版时 我似乎无法与我在此处创建的其他容器的内容进行交互 例如按钮等 这就是我在代码中所做的 我省略了所有导入等 class MyContainer ex