用cc.loader.load()方法从远程服务器下载了图片,是cc.Texture2D类型,怎么复制给sprite组件?
错误方法1、
后果:所有与sprite用了相同图片的cc.Sprite组件都会被修改。
错误方法2、

后果:下载的新图片不会自动缩放,如果尺寸大于sprite节点的尺寸,就会不匹配,会超出或者太小
还有什么招?大神教教我,被这个东西折腾两天了。
用cc.loader.load()方法从远程服务器下载了图片,是cc.Texture2D类型,怎么复制给sprite组件?
错误方法1、
错误方法2、

后果:下载的新图片不会自动缩放,如果尺寸大于sprite节点的尺寸,就会不匹配,会超出或者太小
还有什么招?大神教教我,被这个东西折腾两天了。
这种写出自己尝试过的方法我们还是很鼓励的~ ![]()
可以再放几张对比截图来看看吗?说一下你需要的效果和实际的效果
我是直接用方法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…
这个好像是ajax跨域访问的问题,我也不知道怎么处理,同事帮我设置了一下浏览器,但是没看明白。
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 的方式
为什么会这样?
请问用new SpriteFrame的方式的话,原生环境下一定要像引擎提示的那样手工retain release吗?
是的,否则会被自动释放掉
那我觉得引擎是否应该提供一个更友好的方式来加载远程图片?比如像loadRes一样直接加载为cc.SpriteFrame?大家都有这个问题和需求。
用new spriteframe 的方法加载了新图片后,node节点的尺寸会被修改为新图片的尺寸