CocosCreator回调函数,bind,this

博客指出7种调用代码里,有NOT标识的属于不正确调用方式,采用这种方式最终在回调函数中不能正确get到this关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        // 1,匿名函数---->OK
        // let moveCallback = cc.callFunc(() => {
        //     this.beginnerNode.runAction(this.beginnerAction);
        // });

        // 2,函数声明和调用放到一起---->NOT
        // let moveCallback = cc.callFunc(function() {
        //     this.beginnerNode.runAction(this.beginnerAction);
        // });

        // 3,函数声明和调用放到一起,并为其bind this关键字---->OK
        // let moveCallback = cc.callFunc(function () {
        //     this.beginnerNode.runAction(this.beginnerAction);
        // }.bind(this));

        // 4,函数声明和调用放到一起,并设置selectorTarget参数为this---->OK
        // let moveCallback = cc.callFunc(function () {
        //     this.beginnerNode.runAction(this.beginnerAction);
        // }, this);

        // 5,直接调用函数---->NOT
        // let moveCallback = cc.callFunc(this.runBeginnerAction);

        // 6,调用函数,并设置selectorTarget参数为this---->OK
        // let moveCallback = cc.callFunc(this.runBeginnerAction, this);

        // 7,调用函数,并为其bind this关键字---->OK
        let moveCallback = cc.callFunc(this.runBeginnerAction.bind(this));

    private runBeginnerAction() {
        this.beginnerNode.runAction(this.beginnerAction);
    }

上述7种调用代码中NOT标识的,表示是不正确的调用方式,最终在回调函数中不能正确get到this关键字。

### 如何在 Cocos Creator 中创建和使用滚动视图组件 #### ScrollView 组件概述 Cocos Creator 提供了 `ScrollView` 组件来实现滚动视图的效果。该组件允许开发者在游戏中轻松集成可滚动的内容区域,适用于展示动态内容或大量数据项的情况[^1]。 #### 添加 ScrollView 到场景中 为了向项目添加一个可以滚动的界面部分,在编辑器内通过拖拽方式将预制件或其他节点放置到想要成为滚动区的位置上,并为其附加 `ScrollView` 组件。这可以通过右键点击目标父级节点并选择 "Add Component" -> "UI" -> "ScrollView" 来完成操作[^2]。 #### 配置 ScrollView 属性 配置好基本结构之后,还需要调整一些重要的属性以满足具体需求: - **Content (内容)**: 设置要被滚动显示的实际内容所在的节点。 - **Direction (方向)**: 定义滚动的方向可以选择水平、垂直或是两者皆有。 - **Inertia (惯性)**: 控制当手指离开屏幕后是否有继续滑动的感觉,默认开启。 - **Bounce Top/Bounce Bottom**: 当到达顶部或底部时是否反弹回原位。 - **Elasticity (弹性系数)**: 影响反弹强度的一个参数值。 这些选项都可以直接在 Inspector 面板里找到对应的字段进行修改。 #### 编写脚本控制逻辑 除了视觉上的设定外,通常也需要编写相应的 JavaScript 或 TypeScript 脚本来处理交互事件以及更新内部的数据源。下面是一个简单的例子展示了如何监听滚动动作的发生: ```typescript import { _decorator, Component } from 'cc'; const { ccclass, property } = _decorator; @ccclass('ScrollHandler') export class ScrollHandler extends Component { @property(cc.ScrollView) scrollView: cc.ScrollView = null!; onLoad() { this.scrollView.node.on("scrolling", this.onScrolling.bind(this)); } onScrolling(event) { console.log(`正在滚动...`); } } ``` 此代码片段定义了一个名为 `ScrollHandler` 的类继承自 `Component`, 并绑定了对 `scrollView` 变量的操作方法 `onScrolling()` ,每当发生滚动行为时就会触发这个回调函数执行特定的任务[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值