cc.follow 简单使用

小白菜一枚,今天简单测试了一下cc.follow的用法。个人感觉是“移动摄像头”,比直接移动节点简单些。

测试例子已经传到码云上了。

地址https://gitee.com/wj12318/followTest.git
 

制作步骤:

1.层级管理器中结构如下,其中hero是bg的子节点。

2.添加两个脚本文件,follow挂在bg下,gameCtrl.js挂在节点gameCtrl节点下。

其中gameCtrl.js代码如下,作用是游戏开始时让主角向右边移动一段距离(挂在gameCtrl节点下)

//gameCtrl.js

cc.Class({
    extends:cc.Component,
    properties:{
        hero:cc.Node,
    },
    onLoad:function(){
        this.hero.runAction(cc.moveTo(3,2000,0));
    },
});

cc.follow的用法有两种,一种是 cc.follow(target,cc.rect());一种是cc.follow(target);我用的是第二种(貌似第一种是限定在一个矩形区域内进行跟踪,第二种没有这种限制)。如下是follow.js代码,挂在bg节点下。

//follow.js
cc.Class({
    extends: cc.Component,

    properties: {
        hero:cc.Node,
    },

    onLoad:function(){
        this.node.runAction(cc.follow(this.hero));
    },
    start () {

    },
});

 

 挂载情况如下:

 测试结果(跟随还不错,就是有些时候有点卡顿。。。可能我还没掌握到其中的奥秘)

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
### 回答1: 你可以使用自定义的 Scrapy 中间件来处理 response.follow() 请求。 首先,在你的 Scrapy 项目中创建一个中间件文件,然后在这个文件中定义一个新的中间件类。在这个类中,你需要实现以下三个方法: ``` from scrapy import signals class MyMiddleware: def __init__(self): # 在这里初始化中间件 pass @classmethod def from_crawler(cls, crawler): # 创建中间件实例,并将其绑定到信号 middleware = cls() crawler.signals.connect(middleware.spider_opened, signals.spider_opened) return middleware def process_request(self, request, spider): # 在这里处理 response.follow() 请求 if request.callback == "parse": request = request.replace(callback=self.parse) return request def parse(self, response): # 在这里处理响应数据 pass ``` 然后,你需要在 Scrapy 的设置文件中启用你的中间件: ``` # settings.py DOWNLOADER_MIDDLEWARES = { "myproject.middlewares.MyMiddleware": 500, } ``` 最后,在你的爬虫文件中使用 response.follow() 方法即可。 ### 回答2: Scrapy是一个用于爬取网站数据的Python框架,可以通过设置中间件对请求和响应进行处理。中间件是Scrapy中的一个组件,可以对请求进行修改、过滤或重定向,同时也可以对响应进行处理。 要将response.follow方法加入到中间件里,需要按照以下步骤进行操作: 1. 创建一个新的Scrapy中间件类,继承自scrapy.downloadermiddlewares.DownloaderMiddleware类。 2. 在中间件类中重写process_response方法,该方法会在下载器下载完网页后被调用。 3. 在process_response方法中判断当前的响应是否需要进行重定向,如果需要重定向,则调用response.follow方法来跟进重定向的URL。 4. 返回处理后的响应对象。 下面是一个示例: ```python from scrapy import Request class MyMiddleware(object): def process_response(self, request, response, spider): if response.status in [301, 302]: redirected_url = response.headers.get('Location') if redirected_url: new_request = Request( url=redirected_url, headers=request.headers, cookies=request.cookies, meta=request.meta, dont_filter=True # 如果要进行重定向,需要设置dont_filter为True,避免重复访问 ) # 调用response.follow方法来跟进重定向的URL return spider.follow(new_request) return response ``` 在上述示例中,我们创建了一个名为MyMiddleware的中间件类,其中重写了process_response方法。方法中首先判断响应的状态码是否为301或302,如果是,则获取重定向的URL,并创建一个新的Request对象。然后,通过调用spider.follow方法来跟进重定向的URL。最后,返回处理后的响应对象。 需要注意的是,上述示例仅为演示如何将response.follow方法加入到中间件里,具体的实现方式可能会因具体的项目需求而有所变化。 ### 回答3: 要将`response.follow`方法添加到Scrapy的中间件中,你需要按照以下几个步骤进行操作: 1. 创建一个自定义的中间件类,继承自Scrapy的`DownloaderMiddleware`类,并重写`process_request`方法: ```python from scrapy import Request class MyMiddleware(object): def process_request(self, request, spider): if isinstance(request, Request): # 判断请求是否为Request类型 if 'follow' in request.meta: # 判断请求的meta中是否存在'follow'字段 url = request.url callback = request.callback priority = request.priority dont_filter = request.dont_filter return Request(url=url, callback=callback, priority=priority, dont_filter=dont_filter) return None ``` 2. 在Scrapy的设置文件`settings.py`中,将自定义的中间件添加到`DOWNLOADER_MIDDLEWARES`配置项中: ```python DOWNLOADER_MIDDLEWARES = { 'yourproject.middlewares.MyMiddleware': 543, # 数字越小,优先级越高 } ``` 3. 在爬虫中使用`response.follow`方法,并在请求的meta中添加`'follow': True`,以触发中间件的处理: ```python import scrapy class MySpider(scrapy.Spider): name = 'myspider' def start_requests(self): url = 'http://example.com/page1' yield scrapy.Request(url=url, callback=self.parse, meta={'follow': True}) def parse(self, response): # 使用response.follow方法,会调用中间件中的process_request方法 yield response.follow('/page2', callback=self.parse_page2) def parse_page2(self, response): # 解析爬取到的数据 pass ``` 通过以上步骤,你就可以将`response.follow`方法添加到中间件中,并在需要时使用`response.follow`方法进行请求的跟进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值