lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5863|回复: 1
打印 上一主题 下一主题

FileReader读取图片显示的问题?

[复制链接]

31

主题

0

好友

215

积分

帐下督

Rank: 2

跳转到指定楼层
楼主
发表于 2014-8-14 15:41:47 |只看该作者 |倒序浏览

代码的用途是让用户选择一张图片,然后在canvas上显示出来

测试环境:safari,iphone

问题1:当点击“打开图片”按钮后,弹出文件浏览菜单,用户选择好后,回到界面内,此时点击“刷新”后触发的却是“打开图片”的事件。
问题2:用户选择好图片加载完后,图片没有正常显示,而用户再一次点击“打开图片”加载前面那张图片后,才会正常显示,也就是加载2次。
       (问题2在PC CHROME上没有重现,只有在Safari上会重现)

【index.html】
//用一个file来让用户选择图片,图片选择好后会触发getPhoto函数
<input type="file" capture="camera" accept="image/*" id="cameraInput" name="cameraInput" class="sign_file"  style="display:none" />


【main.js】
function main()
{
        //...初始化省略

        //增加2个按钮

        var btn1 = addButton(0,"刷新",100,80,0,200);//这个按钮用来重现问题1的BUG
        btn1.addEventListener(LMouseEvent.MOUSE_UP, btnRefresh);

        var btn2 = addButton(0,"打开图片",100,80,0,200);//增加一个按钮,用来让用户点击触发打开图片
        btn2.addEventListener(LMouseEvent.MOUSE_UP, btnOpenPhotoOk);
}
function btnRefresh(e)
{
}

//点击打开图片后
function btnOpenPhotoOk(e)
{
        var aa = document.getElementById("cameraInput");
        aa.click();
}

//选择图片确认后
function getPhoto(val)
{
        var file = val.files[0];  
        if(window.FileReader)
        {  
                var fr = new FileReader();  
                fr.onloadend = function(e)
                {  
                        var img = new Image();
                        img.src =e.target.result;
                        bbt = new LBitmap(new LBitmapData( img ) );
                        mapLayer.addChildAt(b,0);
                        //console.log("加载成功");
                };
                fr.readAsDataURL(file);
        }
}


回复

使用道具 举报

37

主题

8

好友

9312

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2014-8-14 15:52:03 |只看该作者
LBitmapData中传入的数据是读取完的Image,
API中有用法,你要么自己onload,要么就应该使用LLoader
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-1 11:02 , Processed in 0.048987 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部