回调函数

来源:互联网 发布:mac上好用的ftp工具 编辑:程序博客网 时间:2024/05/22 05:09

回调函数继承自C语言,在C++中它只在与C语言建立接口或者和已有的回调函数有关联时候才用,C++里面一般用仿函数。

今天在公司修改游戏的一个功能,就是当角色学习一个新技能的时候,技能的图标会从游戏窗口的一个位置飞到快捷栏的一个位置上,现在的功能或者说是bug是当图标落下来之前,icon就已经在快捷栏上了,因为快捷栏是一直在刷新的,当玩家学习了技能后就技能就存在了玩家的技能背包里面,而icon飞下来是需要时间的。要改成只有当icon飞到快捷栏的时候icon才会显示在快捷栏上。

想到的方法是用一个vector来存储玩家新学技能的ID,当每次刷新快捷栏的时候在for循环里面判断icon的ID是否在vector里面,如果在vector里面则不刷新这个icon,也就是不显示这个icon。而移动icon是调用引擎的一个函数MoveTo(参数),所以想用一个回调函数来解决这个问题。

在MoveTo新添加两个参数,一个是函数的指针,一个是回调 函数所用到的参数。每当一个icon移动到快捷栏的时候(引擎判断),则调用回调函数。回调函数则将这个技能的ID在vector里面去掉。再刷新快捷栏的时候就会显示出这icon了。

#include "stdafx.h"#include "iostream"using namespace std;void CallBackFunction(int n){cout<<n;getchar();getchar();}void MoveTo(void(*CallBackFunction)(int),int n ){int a;cout<<"输入一个数字"<<endl;cin>>a;if (a==88){CallBackFunction(n);}}int _tmain(int argc, _TCHAR* argv[]){MoveTo(CallBackFunction,33);return 0;}

家简单写了这个回调函数,当然这公司写的比这个复杂点。

闲着没事,写点东西。记录工作的点点滴滴。希望能坚持下来。

0 0