gpt4 book ai didi

actionscript-3 - 检查 child 是否存在

转载 作者:行者123 更新时间:2023-12-04 06:37:13 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com