我的目标是直接写入纹理/精灵中的像素,以便能够更新游戏的细节。
我在 Cocos2d-x 中使用 C++ 成功地做到了这一点(下面的示例代码)。问题是,“我怎样才能在 Javascript 中做同样的事情?”
//C++ WORKS:
board_texture= *sprite->getTexture();
// initialize pixels (array of GLubyte)
for (i=0 ; i<num_pix; i++){
pixels[i] = (GLubyte) 0;
}
// editing colors at specific positions:
pixels[i]=(GLubyte) 255; // r
pixels[i+1]=(GLubyte) 0; // g
pixels[i+2]=(GLubyte) 0;// b
pixels[i+3]=(GLubyte) 255; // a
board_texture.updateWithData(pixels,0,0,board_w,board_h);
sprite->setTexture(&board_texture);
这在 iPad 上运行得非常快,以 60FPS 轻松更新 400x400 纹理。
但是,我查看了 Cocos2d-JS,并且找不到“updateWithData”的等效工作函数。我能够将 texture2D 放入一个局部变量中,但找不到更新它的像素的方法(还)
//JS does NOT work
var t;
t= this.map_sprite.getTexture(); // OK
// but does NOT allow me to updateWithData
t.setTexture(pixels) // fails, with Invalid Native Format. What's the proper format then?
为什么?Cocos2d 的开发人员表示,未来对 C++ 的支持不如 Javascript(Cocos2d-js),这从 Cocos IDE 中缺乏 JS 支持就可以证明。所以,既然我刚刚开始,我想,我应该用 JS 来做,而不是 C++。