摘要: Pypy从表面意思上面来说的话,就是用Python实现的Python。但是更准确的描述应该是RPython实现的Python。 RPython是Python的子集,为什么到现在CPython一直没有加入JIT功能,就是因为它的变量的类型是运行时确定的,也正是因为这样,JIT很难做。x = ra... 阅读全文
posted @ 2015-05-14 00:07 walkabc 阅读(10247) 评论(1) 推荐(0) 编辑
摘要: 犹记得在2010年9月只身一人来上海找实习机会,因为自己的算法和数据结构基础很牢固,很容易找到了一家100多人的外资公司,这家公司是开发儿童英语学习虚拟社区的。做的产品是基于Flash实现的,产品含有很多课件,益智游戏,目的就是寓教于乐。 所以,来到这家公司,我踏进了Flash开发领域,那是页... 阅读全文
posted @ 2015-05-13 23:41 walkabc 阅读(207) 评论(0) 推荐(0) 编辑
摘要: OSX提供的API都是面向对象的,是基于ObjectC语言的,在OSX中文件的操作可以通过标准C语言提供的接口,fread,fwrite,fseek,通过这几个接口基本上可以完成文件的读写功能。 还有一些delete文件的接口是由UNIX提供的,因为OSX是基于UNIX的,UNIX中的接口在OSX中也是可以使用的,我们使用的一些系统级别的API也只是OSX对UNIX的API封装而已,因为封装的不错,所以,我们最好还是使用OSX提供的API才操作文件。 在OSX中,对文件的操作都是由NSFileManager来完成的。下面我贴出来NSFileManager.h头文件。 /* NS... 阅读全文
posted @ 2013-12-29 22:23 walkabc 阅读(1270) 评论(0) 推荐(0) 编辑
摘要: Android系统就是一个回调的系统,为什么使用回调来设计呢?回调的好处在于你不需要了解其他的东西,而只需要把自己关注的回调函数准备好,剩下的事情就可以不用管了,这样写的话,基本上实现了功能的隔离,回调函数永远不知道其他的事情,他只需要关注自己要做什么事情即可。其他的功能就像是一个黑匣子,这样的设计是针对接口的设计,只要接口不改变,Android系统的SDK更新也不会影响以前开发的程序。 阅读全文
posted @ 2013-10-22 15:23 walkabc 阅读(298) 评论(0) 推荐(0) 编辑
摘要: Starting Activities and Getting ResultsThestartActivity(Intent)method is used to start a new activity, which will be placed at the top of the activity stack. It takes a single argument, anIntent, which describes the activity to be executed.Sometimes you want to get a result back from an activity whe 阅读全文
posted @ 2013-10-22 15:18 walkabc 阅读(224) 评论(0) 推荐(0) 编辑
摘要: class CC_DLL CCNode : public CCObject{public: /// @{ /// @name Constructor, Distructor and Initializers /** * Default constructor */ CCNode(void); /** * Default destructor */ virtual ~CCNode(void); /** * Initializes the instance of CCNode * ... 阅读全文
posted @ 2013-10-07 12:57 walkabc 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 1 public function render(stage3D:Stage3D):void { 2 var i:int; 3 var j:int; 4 var light:Light3D; 5 var occluder:Occluder; 6 // Error checking 7 if (stage3D == null) throw new TypeError("Parameter stage3D must be non-null."); 8 // Reset ... 阅读全文
posted @ 2013-08-18 13:45 walkabc 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 在移动和旋转之间,最好是指定操作的对象是什么? 有可能是投影矩阵,有可能是模型矩阵。 操作投影矩阵的结果就只是改变投影矩阵,模型本身的顶点位置都保持不变,但是因为投影矩阵矩阵变化了,定点映射到新的投影坐标系时,顶点的显示发生了变化。 操作模型矩阵的结果就是,投影坐标系不变,但是模型顶点映射到了新位置,这两种矩阵操作,都不会改变模型顶点,只不过是改变了顶点映射的位置。 使用那一种矩阵变换都可以完成移动和旋转,但是相对来说,移动投影坐标系,比较通用些。 最好在操作这两种矩阵之前,显式的指定下当前自己需要操作的矩阵, glMatrixMode(GL_PROJECTION);glMat... 阅读全文
posted @ 2013-08-04 02:56 walkabc 阅读(764) 评论(0) 推荐(0) 编辑
摘要: //============================================================================// Name : TestOpenGL.cpp// Author : // Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//=======================================================================... 阅读全文
posted @ 2013-08-04 02:45 walkabc 阅读(413) 评论(0) 推荐(0) 编辑
摘要: //============================================================================// Name : TestOpenGL.cpp// Author : // Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//=======================================================================... 阅读全文
posted @ 2013-08-04 02:41 walkabc 阅读(806) 评论(0) 推荐(0) 编辑
摘要: 众所周知,opengl是跨平台,所以opengl中API中没有关于创建窗口,管理用户输入的函数,因为每个系统的窗口管理器不一定相同,所以关于窗口管理这一部分通常是由第三方软件提供,比较知名的是glut,glfw,今天要介绍的就是glfw。最新的glfw的版本已经是3.0版本,但是cocos2d-x中使用的部分是2.0版本,所以就先分析glfw2.0版本。//============================================================================// Name : TestOpenGL.cpp// Author ... 阅读全文
posted @ 2013-08-04 01:55 walkabc 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 显卡工作原理是什么?我们在 监视器上看到的图像是由很多个小点组成的,这些小点称为“像素”。在最常用的分辨率设置下,屏幕显示一百多万个像素,电脑必须决定如何处理每个像素,以便生成图像。为此,它需要一位“翻译”,负责从CPU获得二进制数据,然后将这些数据转换成人眼可以看到的图像。除非电脑的主板内置了图形功能,否则这一转换是在显卡上进行的。 显卡的工作非常复杂,但其原理和部件很容易理解。在本文中,我们将了解显卡的基本部件和它们的作用。此外,我们还将考察那些共同发挥作用以使显卡能够快速、高效工作的因素。 -->显卡生成一幅线框图像,然后进行填充并添加纹理和阴影。 -->显卡的基本原理 我们 阅读全文
posted @ 2013-07-31 00:37 walkabc 阅读(3583) 评论(0) 推荐(0) 编辑
摘要: 关于渲染管线将什么呢?无非就是在OpenGL的管道当中各个部分的功能以及如何在管道当中形成了我们想要的最终的一幅图.(像素).而管线当中的操作可分为以下几个部分:阶段1. 指定几何对象.如:点线 三角形.等一些几何图元..OpenGL绘制几何图元的方法有以下三种:一次一个顶点.即使用glBegin() glVertex() glEnd() 指定几何对象. 使用顶点数组..如glDrawArrays.glDrawElements.等.一次性的绘制大量图元.上面这两种模式则是立即模式.即指定完图元之后会被立即渲染.即将所有数据发往渲染管线后立即被渲染. 显示列表模式.它存储于OpenGL服务端 ( 阅读全文
posted @ 2013-07-29 23:00 walkabc 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 记得刚毕业的时候,公司里面还有比较多的C++程序员,他们对语言的痴迷让我一度认为这才是牛人。 有一个主管叫酱油哥写个数据分析的程序,此酱油哥python很厉害,但主管希望用可以使用C++来做,毕竟数据分析对效率要求较高,尤其是公司大量的数据,光是读取就很耗时,酱油哥开始动手了,首先搞段代码去链接MySQL,然后读取数据,之后分析数据,很不幸,平时python用习惯了,再使用C++来办事,总觉得是在坑自己,后来酱油哥说可以使用python做嘛,没向主管请示的情况下,两个小时,来程序框架建好了,跑起来不错,给主管看,主管猛夸酱油哥做事迅速,后来虽知道没有使用C++来做,有没有责备什么。 但... 阅读全文
posted @ 2013-07-23 23:31 walkabc 阅读(182) 评论(0) 推荐(0) 编辑
摘要: freshman@freshman:~$ gcc --help用法:gcc [选项] 文件...选项: -pass-exit-codes 在某一阶段退出时返回最高的错误码 --help 显示此帮助说明 --target-help 显示目标机器特定的命令行选项 --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] 显示特定类型的命令行选项 ... 阅读全文
posted @ 2013-07-23 00:02 walkabc 阅读(227) 评论(0) 推荐(0) 编辑
摘要: ===HelloWorld===make.sh#!/bin/sh# openbsd 4.9# gcc 4.2.1# openjdk 1.7.0export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.javac HelloWorld.javajavah HelloWorldgcc -shared libHelloWorld.c -o libHelloWorld.sojava HelloWorldbuild.bat:: Microsoft Visual Studio 2012 Visual C++ compilerSET VC = "C:\Program Fil 阅读全文
posted @ 2013-07-22 23:50 walkabc 阅读(252) 评论(0) 推荐(0) 编辑
摘要: /* * Brick.cpp * * Created on: 2013-7-20 * Author: freshman */#include "Brick.h"Brick::Brick() { _isTouchBegined = false;}Brick::~Brick() {}/**获取砖块所处的位置*/CCRect Brick::getRect() { CCSize size = getContentSize(); return CCRectMake( -size.width / 2, -size.height / 2, size.width, size.he... 阅读全文
posted @ 2013-07-21 00:31 walkabc 阅读(302) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;#include #include int printMax(int value, ...){ va_list args; va_start(args, value); int val = value; while (val) { cout<<val<<endl; val = va_arg(args, int); } return 0;}int main(){ printMax(1, 2, 3, 0); return 0;} 阅读全文
posted @ 2013-07-16 11:56 walkabc 阅读(139) 评论(0) 推荐(0) 编辑
摘要: cocos2d-x中内置了很多的容器类,每个容器类都是容纳CCObject的对象,在对象被添加到容器中时,他的引用就增加了一。下面举一个例子说明:CCArray中有addObject方法,负责把一个CCObject对象添加到这个容器中,在使用addObject添加进来的对象的引用都会加一。void CCArray::addObject(CCObject* object){ ccArrayAppendObjectWithResize(data, object);}/** Appends objects from plusArr to arr. Capacity of arr is incr... 阅读全文
posted @ 2013-07-08 14:55 walkabc 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 在cocos2d-x中,CCNode的移动都是通过Action来执行的。下面介绍几款常见的Action,比如移动,旋转CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", TITLE_FONT_SIZE); // position the label on the center of the screen pLabel->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visib... 阅读全文
posted @ 2013-07-07 22:16 walkabc 阅读(222) 评论(0) 推荐(0) 编辑
摘要: cocos2d-x默认的坐标系,如上图所示。每个CCSprite的原点都是在其本身的中心点上。 阅读全文
posted @ 2013-07-07 12:28 walkabc 阅读(99) 评论(0) 推荐(0) 编辑
摘要: Flash平台从11.4版本就开始支持多线程编程,只不过这个使用起来有点坑爹。每个 worker 都是基于独立的 swf 应用程序创建的并且作为独立的 swf 应用程序执行。要创建 Worker 实例,您需要获取 SWF 文件的字节以作为 ByteArray 实例,并将该实例传递给此方法。下面就详细的介绍一下三种方式使用Flash的多线程技术。针对此目的,有三种常用方式可用来访问 swf 的字节:// Embed the SWF file [Embed(source="../swfs/BgWorker.swf", mimeType="application/oct 阅读全文
posted @ 2013-07-07 10:42 walkabc 阅读(1133) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章,说了通过Java的使用方式来使用C++,下面就分析一下如何做。Java中的对象都是被new出来的,因为Java虚拟机有自动内存回收技术,所以不需要程序员手动delete,在使用C++的时候,我们尽量通过new的方式来创造C++对象,最后通过delete来释放内存。Java中的=赋值运算符都是把对象的引用传递,而不是C++的拷贝构造函数调用。所以我们要禁止对象拷贝,把=赋值运算符禁止掉。/* * NoCopying.h * * Created on: 2013-7-7 * Author: freshman */#ifndef NOCOPYING_H_#define NOC... 阅读全文
posted @ 2013-07-07 10:22 walkabc 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 首先说一下为什么会写下这片文章,学习过C++的同学都明白,C++编译器在背后隐藏了很多的秘密。例如:1、创建一个默认构造方法2、创建一个默认析构方法3、创建一个默认拷贝构造方法4、创建一个默认=运算符正是因为创建了这几个方法,导致C++对象的生命周期不可预测。对象在传递的过程中就发生了对象拷贝,在作用域结束的时候,(对象副本)不可避免的被释放了。从而可能导致(对象原本)受到无辜的牵连。其实这些还是可以预测的,比如,C++自动析构的对象都是处在栈上面的对象,而分配到堆上面的对象,C++是无能为力的,它没有能力主动终结堆上的对象。因为这些对象必须是程序员主动delete。说到这里就清楚了,尽量把对 阅读全文
posted @ 2013-07-05 00:09 walkabc 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 不多说,上源码,setFrameSize这个函数大家都比较熟悉吧,没错,main函数中的关键函数,定义了游戏窗口的大小,但是它可不只是定义窗口大小的。void CCEGLView::setFrameSize(float width, float height){ bool eResult = false; int u32GLFWFlags = GLFW_WINDOW; //create the window by glfw. //check CCAssert(width!=0&&height!=0, "invalid window's size equal 0 阅读全文
posted @ 2013-07-01 23:39 walkabc 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 太晚了,先放上源码再说。 #include "Paddle.h"Paddle::Paddle(void){}Paddle::~Paddle(void){}CCRect Paddle::rect(){ CCSize s = getTexture()->getContentSize(); return CCRectMake(-s.width / 2, -s.height / 2, s.width, s.height);}Paddle* Paddle::paddleWithTexture(CCTexture2D* aTexture){ Paddle* pPaddle = n 阅读全文
posted @ 2013-07-01 00:28 walkabc 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 每个Node对象都要一个protected的指针变量m_pScheduler,这个指针指向的是director->getScheduler();有源码证明 1 CCNode::CCNode(void) 2 : m_fRotationX(0.0f) 3 , m_fRotationY(0.0f) 4 , m_fScaleX(1.0f) 5 , m_fScaleY(1.0f) 6 , m_fVertexZ(0.0f) 7 , m_obPosition(CCPointZero) 8 , m_fSkewX(0.0f) 9 , m_fSkewY(0.0f)10 , m_obAnchorPointI. 阅读全文
posted @ 2013-06-30 15:03 walkabc 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 1.窗口:这就不用解释了吧2.视口:就是窗口中用来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口大或者小。只有绘制在视口区域中的图形才能被显示,如果图形有一部分超出了视口区域,那么那一部分是看不到的。通过glViewport()函数设置。如下图所示: 图1. 不同大小的视口3.裁剪区域(平行投影):就是视口矩形区域的最小最大x坐标(left,right)和最小最大y坐标(bottom,top),而不是窗口的最小最大x坐标和y坐标。通过glOrtho()函数设置,这个函数还需指定最近最远z坐标,形成一个立体的裁剪区域。 阅读全文
posted @ 2013-06-30 00:13 walkabc 阅读(807) 评论(0) 推荐(0) 编辑
摘要: #include "main.h"#include "../Classes/AppDelegate.h"#include "cocos2d.h"#include #include #include #include USING_NS_CC;// 500 is enough?#define MAXPATHLEN 500int main(int argc, char **argv){ // get application path int length; char fullpath[MAXPATHLEN]; length = readli 阅读全文
posted @ 2013-06-29 22:45 walkabc 阅读(273) 评论(0) 推荐(0) 编辑
摘要: #include "AppDelegate.h"#include "HelloWorldScene.h"#include "AppMacros.h"USING_NS_CC;/**应用程序代表*/AppDelegate::AppDelegate() {}AppDelegate::~AppDelegate() {}/** * 这个方法会被CCApplication::sharedApplication()->run()调用 * */bool AppDelegate::applicationDidFinishLaunching() { 阅读全文
posted @ 2013-06-29 22:35 walkabc 阅读(246) 评论(0) 推荐(0) 编辑
摘要: #ifndef __CC_APPLICATION_PROTOCOL_H__#define __CC_APPLICATION_PROTOCOL_H__NS_CC_BEGINenum TargetPlatform{ kTargetWindows, kTargetLinux, kTargetMacOS, kTargetAndroid, kTargetIphone, kTargetIpad, kTargetBlackBerry,};/** * @addtogroup platform * @{ */class CC_DLL CCApplicationProto... 阅读全文
posted @ 2013-06-29 22:24 walkabc 阅读(304) 评论(0) 推荐(0) 编辑
摘要: Cocos2d-x的帧频系统默认是60帧每秒。View Code 1 /**这里返回的单位是按毫秒计算,这个时间的WallClock时间,即1970_1_1到现在的时间差*/2 static long getCurrentMillSecond() {3 long lLastTime;4 struct timeval stCurrentTime;5 6 gettimeofday(&stCurrentTime,NULL);7 lLastTime = stCurrentTime.tv_sec*1000+stCurrentTime.tv_usec*0.001; //mi... 阅读全文
posted @ 2013-05-07 00:24 walkabc 阅读(346) 评论(0) 推荐(0) 编辑