拜托了,很需要的一个功能,求解决,一个大的挑战

我用cocos2dx lua代码 http获取网络图片,使用的是get方式,然后图片数据成功获取下来了,

问题是:我怎样用这个图片数据来创建精灵, c++的方式我知道怎样创建精灵,但是lua我还不知道怎么创建?

c++的方式是new一个Image,然后用这个图片数据来初始化它,再就是创建纹理,就ok了!

我想问的是 用lua的方式怎么用这个图片数据来创建精灵??? 我尝试了一种方式,就是绑定了一个c++函数到lua,这个函数参数就是std::string(用来传入图片数据)、返回值是Image类型,然后我利用这个返回值在lua中new了一个Texture2d,并用这个返回值来初始化它,就在初始化的时候报错了,提示 cocos2d: the file is not a dds file! ,不知道什么问题, 求解决???

直接用lua的创建精灵的方法cc.Sprite:create(“Image/test.png")不是就可以了?

display.newSprite…

楼上2位可能没看懂我表达的意思,我是在lua中调用http请求网络图片,并成功获取到了图片的数据,现在要用这个图片数据来创建精灵,不是要把图片数据保存到本来,再用cc.Sprite:create(“Image/test.png")来创建精灵。。。

c++中是这样处理的:pImage = new Image();pImage->initWithImageData((const unsigned char *)buffer, nSize); texture = new Texture2D();texture->initWithImage(pImage);然后就可以用这个纹理来创建精灵了。。

我现在是在lua中处理,按照我的方法不行了。。。

为什么不先保存在本地呢。。。。本来简单的功能搞的复杂化, 没接口的话自己写tolua吧

我知道你们的意思,要达到目的很容易,同样的功能用其它方法也能实现。。。但是我现在研究的就是要单纯的用lua的http来请求网络图片,并获取到图片数据,然后创建精灵

http://discuss.cocos2d-x.org/t/sprite-from-url/19468

原来看看英文社区也是有好处的 ~

不明白这是在挑战啥, 就算是http图片 也是先下载到本地再显示的。这样可以控制缓存,达到加速

:2::2::2::2::2:

动态更新你做过吗?

直接下载服务器上面的图片,服务器上面是png下载完后就是本地就是png的。

更新的做法是:
在本地创建和服务器一模一样的文件名和后缀,服务器上面得到的文件数据,然后拿这些数据直接写入到本地创建的那个文件里面

或许你的是直接读网页的图片还是什么的,也这样试试看,这样做会简单一点。

然后在下载的路径那里直接用那张图片创建精灵就可以了

没必要一定要数据来创建出精灵吧。如果可以用C++做数据创建精灵那就用C++封装好然后lua再调用就行了嘛。

如果一定要C++才能做的话,那就全部C++做完,不要又留返回值是Image类型的东西给lua做。以前图片变灰是没有官方解决方案,那时候直接图片变灰全部C++做完,lua一句话调用,不会再涉及任何陌生的数据类型或者参数。

你说的方法是最普通的,我早已实现。不知道为什么单纯的用lua的local xhr = cc.XMLHttpRequest:new() – http请求 这样请求网络图片数据,然后创建精灵不行

我和楼主的方法差不多。就是将获取回来的图片数据写入到纹理缓存中,然后用这个纹理进行创建精灵。

http://www.cocoachina.com/bbs/read.php?tid=298560 这是我用c++实现的,绑定到lua,一定要看看