actionscript-3 - 检查 child 是否存在

标签 actionscript-3

你好,我有一个函数如下:

private function seatClickHandler(e:MouseEvent):void{

            var check:Check = new Check();
            if(e.target.contains(check)){
                e.target.removeChild(seat);
            }else{
                e.target.addChild(check);
            }
        }

基本上我想检查 e.target 是否包含一个名为 check 的子项。如果确实如此,我希望 e.target 删除 child ,否则我想添加 child 。但是我尝试的方法似乎不起作用,尽管我认为这是可行的方法。有什么建议吗?

最佳答案

当您声明 Check 对象时,Actionscript 会为该特定对象创建一个引用代码。

因此,第一次运行您的代码时,您的Check 对象可以被赋予@c0ecc29 的引用。您的 if 语句检查 @c0ecc29 是否是 target 的子组件。它不会,所以引用 @c0ecc29Check 对象被添加到 target

第二次调用 clickHandler 时,将创建一个 Check 对象的新实例,该实例将具有一个 引用 ID。您的目标具有带有 @c0ecc29 引用的原始 Check 对象,因此它不会被删除。

实现此功能的正确方法取决于目标是什么(DataGrid、Group 等)。

编辑: 根据您的意见,我会尝试这样的事情。它检查 Check 对象是否是 target 的子对象,并在需要时添加它。然后当 Check 对象被点击时,它会切换它的可见性。

public var check:Check = new Check();

private function seatClickHandler(e:MouseEvent):void
{
  if(!e.target.contains(check))
  {
    check.addEventListener(MouseEvent.CLICK, check_handleClick);
    e.target.addChild(check);
  }
}

protected function check_handleClick(event:MouseEvent):void
{
  check.visible = !check.visible;
}

如果您实际上需要从 target 中删除 Check 对象而不是仅仅改变它的可见性,您可以试试这个:

public var check:Check = new Check();

private function seatClickHandler(e:MouseEvent):void
{
  if(!e.target.contains(check))
  {
    e.target.addChild(check);
  }
  else
  {
    e.target.removeChild(check);
  }
}

关于actionscript-3 - 检查 child 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597357/

相关文章:

actionscript-3 - 嵌入欧美字符

actionscript-3 - 在 TabNavigator 中隐藏选项卡的最佳方法是什么?

html - 如何在 swf 文件中添加链接?

actionscript-3 - Away3D 无法加载 AWD

php - 一些使 AS3 和 ZendAMF 协同工作的帮助

php - 将分数从 AS3 提交到 PHP/SQL - #Error 2101

windows - AS3/AIR - 桌面应用程序警报(?)

actionscript-3 - Flex Printjob崩溃

actionscript-3 - 在 AS3 的子类中序列化向量时遇到问题

actionscript-3 - AIR - 按比例调整 native 窗口大小