无法加载图片不了图片,各位有什么办法吗

输入关键字或相关内容进行搜索
哎,同样的问题啊。图片预览也是,图片多了,图片大了,直接卡出翔。我觉得这个应该用原生写。不然体验真的很差。
你的图片轮播组件中有多少张图片?太多张的话,指示灯就显得很拥挤吧?如果确实需要展示很多图片,建议动态变换图片的src,控制当前页面加载的图片总数量。
图片大小确实要控制好。不然容易崩内存。
控制好后不会影响商用。
图片弄小了,质量又差了,不知如何是好.
要回复问题请先或荣耀6的图库里面加载不出来图片,但是文件管理器里面还是能看到图,不想用第三方软件,有没有办法恢复啊? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。1被浏览432分享邀请回答暂时还没有回答,开始写第一个回答02:17:43 UTC
之前已经发过一个帖子讨论这个问题了,这里再重新整理一下。
加载网络上的图片一定是用cc.loader.load()方法,没啥说的,重点是怎么把已经加载到了内存里面的图片赋值给sprite组件使用。这次我在场景里放了两个引用同一张图片的sprite来说明问题,如下图,两个sprie的原始样子两个sprite我只给**左边**的加载新图片
我之前有两个办法:1.new 一个新的cc.SrpiteFrame,然后sprite.spriteFrame=新spriteFrame
新图片加载以后按照新图片的尺寸修改了node的width和height
中间黄色文字是自己new spriteFrame会被引擎鄙视
2.使用spriteFrame.setTexture()方法
这个不会有尺寸的问题,但是新问题是setTexture方法直接修改了图片。sprite组件初始设置的图片是a,所有引用了这个a图片的sprite都被修改了。结果就是这样,我只想修改左边的sprite,右边的sprite同时被修改了。
好再不会被鄙视了
这就是之前困扰了我差不多一个星期的问题,一直死脑筋在里面转没转出来。我都准备放弃creator了,下礼拜老板要交货,鸭梨山大啊。昨晚干完其他活,作为调剂又把这个问题翻出来了(其实已经放弃creator转投cocos2d-js一整天了)。突然灵光一闪,想了下面的办法:
得到我需要的效果:人物图片是个很大尺寸的图片,现在就压缩在需要的范围了,另外一个图片也没有收到影响。
还是用方法1,只是把尺寸修改回来了。被鄙视这件事怎么处理,希望会的来说说。比如可能什么情况下有什么后果,或者怎么样处理,希望大牛来说说。我是真不懂,也不知道会不会有什么严重问题,只能先不管了。方法2.是真的不能用,除非什么有特别需要的地方。
就是这样了,方法很简单,过程很曲折,这个问题对我的项目影响很大,已经到了放弃creator差点就开始用cocos2d-js重构的地步了。做这个决定是很痛苦的,所以格外又格外,慎重又慎重的写这个帖子记录一下。
03:20:30 UTC
我目前是这样想的(以下代码仅提供思路,未测试):
RemoteImageLoader.js:
cc.Class({
extends: cc.Component,
properties: {
lockSize: false
onLoad: function() {
this._mySpriteFrame =
_releaseMySpriteFrame: function() {
// 若为原生环境,且mySpriteFrame存在,则release
if (CC_JSB && this._mySpriteFrame) {
this._mySpriteFrame.release();
this._mySpriteFrame =
_setMySpriteFrame: function(spriteFrame) {
// 仅在原生环境下需要retain, release
if (CC_JSB) {
spriteFrame.retain();
this._releaseMySpriteFrame();
this._mySpriteFrame = spriteF
_createSpriteFrameWithoutWarning: function() {
// 临时屏蔽创建cc.SpriteFrame时来自引擎的BS
var warn = cc.
cc.warn = function() {
var spriteFrame = new cc.SpriteFrame();
// 恢复cc.warn
return spriteF
_setTexture: function(texture) {
// 创建cc.SpriteFrame,屏蔽warning
var spriteFrame = this._createSpriteFrameWithoutWarning();
// 给spriteFrame设置texture
spriteFrame.setTexture(texture);
// 获取节点上的cc.Sprite
var sprite = this.getComponent(cc.Sprite);
if (!sprite) {
sprite = this.addComponent(cc.Sprite);
// 替换节点cc.Sprite组件的cc.SpriteFrame
sprite.spriteFrame = spriteF
this._setMySpriteFrame(spriteFrame);
loadRemoteImageWithUrlAndType: function(url, type = 'png') {
cc.loader.load({id: url, type: type}, (err, texture)=& {
if (!err) {
if (this.lockSize) {
size = this.node.getContentSize();
this._setTexture(texture);
if (this.lockSize) {
this.node.setContentSize(size);
onDestroy: function() {
cc.log('destroy');
this._releaseMySpriteFrame();
我对retain, release理解不深,希望Jare帅、Panda大神能指点一下。也希望官方能出更方便的远程图片加载方法!
03:41:03 UTC
被鄙视这件事怎么处理,希望会的来说说。比如可能什么情况下有什么后果,或者怎么样处理,希望大牛来说说。
这个没关系的,在原生层会警告需要自己管理 sprite frame 的内存,这是一个提醒而已。
,在 3.13 中,就不需要再自己管理这部分内存了,retain release 的机制可以省略。
实际上就应该像方法一一样,重新设置了 sprite frame 之后,你还需要自己去修改尺寸的
11:39:50 UTC
目前就是这样用的,但是在web端怎么处理呢?好像在web端执行a.spriteFrame = new cc.SpriteFrame(tex)后,会出现原来的spriteframe和新的spriteFrame同时显示的问题。。。
目前引擎设计的思路是不是一张图片导入编辑器后就变成了一张纹理供精灵使用,无论创建多少精灵(使用同一张纹理),所用的精灵都是同一个纹理,而不是每个精灵都有一份自己的拷贝?
12:35:39 UTC
应该是a.spriteFrame.setTexture(tex)会出现你说的问题吧?通过new cc.SpriteFrame(tex)不会替换之前spriteFrame的纹理。
13:48:36 UTC
很抱歉给楼主带来这么多麻烦!这些应该是引擎要处理好的事情。
02:44:09 UTC
希望1.3.0正式版能去掉new cc.SpriteFrame()的warning
02:46:59 UTC
已经去掉了 asdf
01:22:42 UTC
多谢楼主分享
我也遇到了这个问题picturebox 控件加载大图片的时候。显示红叉,有解决方法吗?
[问题点数:40分,无满意结帖,结帖人micenote]
本版专家分:10
结帖率 100%
CSDN今日推荐
本版专家分:3265
本版专家分:10
本版专家分:5986
本版专家分:72971
2014年4月 荣获微软MVP称号
2017年6月 移动开发大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2013年9月 .NET技术大版内专家分月排行榜第三
本版专家分:6858
本版专家分:10
匿名用户不能发表回复!
其他相关推荐

我要回帖

更多关于 加载不了有办法与? 的文章

 

随机推荐