内存里面的Texture2D怎么赋值给sprite组件?

用cc.loader.load()方法从远程服务器下载了图片,是cc.Texture2D类型,怎么复制给sprite组件?
错误方法1、


后果:所有与sprite用了相同图片的cc.Sprite组件都会被修改。

错误方法2、

后果:下载的新图片不会自动缩放,如果尺寸大于sprite节点的尺寸,就会不匹配,会超出或者太小

还有什么招?大神教教我,被这个东西折腾两天了。

1赞

这种写出自己尝试过的方法我们还是很鼓励的~ :thumbsup:

可以再放几张对比截图来看看吗?说一下你需要的效果和实际的效果

我是直接用方法2按我的需要缩放一下…

你好。cc.loader.load()方法可以直接从远程服务器加载图片吗?? 我加载不下来,打断点调试也没有值。报这个错误,好像是这个方法不能异域访问呀。错误如下:Image from origin ‘http://192.168.1.251’ has been blocked from loading by Cross-Origin Resource Sharing policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:7456’ is therefore not allowed access.
CCTexture2D.js:847Uncaught SecurityError: Failed to execute ‘texImage2D’ on ‘WebGLRenderingContext’: The cross-origin image at http://192.168.1.251/NetbarGame/ProductImage/3.jpg may not be loaded.

你这个是把sprite所引用的的spiteframe改了texture了。你这样,给你想改的sprite new出来个新的spriteframe,再setTexture就好了

我就是这样做的 但是控制台一堆警告 因为API文档里面写了 不推荐 new 一个spiteframe 这种方式,我也想知道正确的姿势应该是什么

我也new cc.SpriteFrame,被引擎鄙视了,同求正确的姿势

同求正确姿势。
用第一种方法spriteFrame.setTexture()后,Canvas下不会立即替换掉图片,还需要别的操作(比如移动Node)后才会替换图片。提前cc.renderer.enableDirtyRegion(false);才可以立即替换,加载完再cc.renderer.enableDirtyRegion(true);。
用第二种方法会被引擎BS…:joy:

这个好像是ajax跨域访问的问题,我也不知道怎么处理,同事帮我设置了一下浏览器,但是没看明白。


好像是修改了这里。
“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” --disable-web-security --user-data-dir=d:\chromecache
就是原来的地址后加上了: --disable-web-security --user-data-dir=d:\chromecache
具体怎么操作你百度一下吧。

setTexture方法可以接受spriteFrame参数吗?

这样吗?图片出不来。被鄙视了,但也没有报错

求缩放的方法。

self.headSprite.spriteFrame = frame

http://forum.cocos.com/t/topic/36700/5?u=734589166
这里有提到,里面链接:
http://www.cnblogs.com/dojo-lzz/p/4265637.html
看懂了就明白了,显然我完全没懂,不过好处是我知道了是什么问题知道该怎么问了。

我个人会推荐继续使用 new SpriteFrame 的方式

1赞

为什么会这样?

请问用new SpriteFrame的方式的话,原生环境下一定要像引擎提示的那样手工retain release吗?

是的,否则会被自动释放掉

那我觉得引擎是否应该提供一个更友好的方式来加载远程图片?比如像loadRes一样直接加载为cc.SpriteFrame?大家都有这个问题和需求。

http://forum.cocos.com/t/topic/39665?u=734589166
重新发了个帖子,想了个解决办法

用new spriteframe 的方法加载了新图片后,node节点的尺寸会被修改为新图片的尺寸