JS查询兄弟节点的办法

兄弟节点必须要有class属性,这里不能用到id属性.
通过子节点,查询父节点,然后通过父节点查询子节点(必须是通过子节点的class属性查询,无法通过id属性查询.)
通过元素属性id为:hello,查询兄弟元素class属性为test的.
具体代码如下:

    <div id="box">
        <p id="hello">hello world!</p>
        <p class="test">这是一个测试</p>
    </div>
    <script>
        var hello = document.getElementById("hello");
        parent = hello.parentNode;
        console.log(parent.getElementsByClassName('test')[0]);
    </script>

### Cocos 中不同节点间的移动实现 #### 使用 `setPosition` 方法调整单个节点的位置 对于简单的节点移动操作,可以使用 `setPosition` 来改变节点的坐标位置。此方法适用于直接控制某个特定节点的位移。 ```javascript // 假设有一个名为 player 的节点实例 player.setPosition(newPos); ``` 当需要响应触摸事件并平滑地更新节点位置时,可以在 `onTouchMove` 函数内计算新的目标位置,并应用适当的比例因子来调节速度[^1]: ```javascript function onTouchMove(event) { const delta = event.getDelta(); const scale = 0.1; const newPos = cc.v2( this.node.position.x + delta.x * scale, this.node.position.y + delta.y * scale ); this.node.setPosition(newPos); } ``` #### 处理父子关系下的相对移动 如果涉及到具有层次结构的多个节点,则需考虑它们之间的相对变换矩阵。为了使子节点相对于其父级独立运动而不影响其他兄弟姐妹组件,应该采用世界空间坐标的转换方式[^5]: ```javascript const worldOffset = cc.v3(deltaX, deltaY, 0); childNode.setWorldPosition(cc.v3.add(childNode.getWorldPosition(), worldOffset)); ``` 这里通过调用 `setWorldPosition()` 和 `getWorldPosition()`, 确保即使是在复杂嵌套情况下也能精确操控各个部分的行为模式。 #### 解决因 Widget 组件引起的固定不动问题 有时开发者会遇到设置了 widget 后节点不再随预期动作而变化的情况。这通常是因为 widget 自动布局特性覆盖了手动设定的位置属性所致。解决办法之一就是在初始化阶段禁用该功能或将相关约束条件解除[^4]: ```javascript node.getComponent(cc.Widget).enabled = false; ``` 或者更谨慎的做法是仅在必要时刻临时关闭再恢复默认状态: ```javascript let widgetComponent = node.getComponent(cc.Widget); if (widgetComponent && shouldDisableWidgetDuringMovement) { originalEnabledState = widgetComponent.enabled; widgetComponent.enabled = false; // Perform movement logic... widgetComponent.enabled = originalEnabledState; } ``` 以上几种策略能够帮助有效地管理 cocos creator 场景内的各种动态效果以及交互逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值