在Egret实现二维码长按识别
Egret中实现生成<img>标签的二维码功能。
一 在index.html上给egret的div增加 id = "gameDiv"。我们会根据id获取这个div,并动态添加一个<img>。
<div style="margin: auto;width: 100%;height: 100%;" class="egret-player" id="gameDiv"
data-entry-class="Main"
data-orientation="portrait"
data-scale-mode="fixedWidth"
data-frame-rate="30"
data-content-width="640"
data-content-height="1136"
data-show-paint-rect="false"
data-multi-fingered="2"
data-show-fps="false" data-show-log="false"
data-show-fps-style="x:0,y:0,size:12,textColor:0xffffff,bgAlpha:0.9">
</div>
二 自定义操作<img>的二维码类QRCode
/**
* 生成<img>标签二维码
* @author chenkai
* @date 2016/12/26
*/
class QRCode{
/**二维码img标签*/
private myImg: HTMLImageElement;
/**二维码图片地址*/
private imgUrl:string;
/**Egret中eui.Image二维码图片,用于定位*/
private codeImg:egret.DisplayObject; /**重置位置*/
private onResize(){
console.log("屏幕旋转,重置二维码位置");
if(this.imgUrl && this.codeImg){
this.showCode(this.imgUrl,this.codeImg);
}
} /**
* 显示二维码
* imgUrl 二维码图片地址
* codeImg egret中二维码图片 (二维码图片容器必须和stage相等高宽)
*/
public showCode(imgUrl: string, codeImg: egret.DisplayObject): void {
this.imgUrl = imgUrl;
this.codeImg = codeImg; //横竖屏旋转,重置二维码位置
App.StageUtils.getStage().addEventListener( //这里的App.StageUtils是我自定义的可全局访问的stage,可以替换成你自己的stage
egret.StageOrientationEvent.ORIENTATION_CHANGE,this.onResize,this); //二维码不存在,则创建一个
if(this.myImg == null){
var gameDiv = document.getElementById("gameDiv");
this.myImg = document.createElement("img");
this.myImg.src = imgUrl;
this.myImg.style.position = "absolute";
this.myImg.style.display = "none";
gameDiv.appendChild(this.myImg);
} //竖屏
if(document.body.clientWidth < document.body.clientHeight){
var wScale = document.body.clientWidth / App.StageUtils.stageWidth;
var hScale = document.body.clientHeight / App.StageUtils.stageHeight;
this.myImg.style.width = codeImg.width * wScale + "px";
this.myImg.style.height = codeImg.height * hScale + "px";
this.myImg.style.left = codeImg.x * wScale + "px";
this.myImg.style.top = codeImg.y * hScale + "px";
this.myImg.style.display = "inline";
//横屏
}else{
var wScale = document.body.clientWidth / App.StageUtils.stageHeight;
var hScale = document.body.clientHeight / App.StageUtils.stageWidth;
this.myImg.style.width = codeImg.height*wScale + "px";
this.myImg.style.height = codeImg.width*hScale + "px";
this.myImg.style.top = (App.StageUtils.stageWidth - codeImg.x - codeImg.width)*hScale + "px";
this.myImg.style.left = codeImg.y*wScale + "px";
this.myImg.style.display = "inline";
} } /**隐藏二维码*/
public hideCode(): void {
if(this.myImg) {
this.myImg.style.display = "none";
}
} /**销毁*/
public onDestroy(){
App.StageUtils.getStage().removeEventListener(egret.StageOrientationEvent.ORIENTATION_CHANGE,this.onResize,this);
this.codeImg = null;
}
}
三 直接在Egret的exml放置二维码图片,变量名为codeImg
竖屏时效果

横屏时效果

四 使用QRCode生成<img>二维码
var codeImg:eui.Image; //exml上二维码图片
var qrCode:QRCode = new QRCode();
qrCode.showCode("resource/assets/Button/button_down.png", codeImg); //button_down.png 随便找的一个蓝色小方块图片
使用QRCode类,在exml的二维码上覆盖一层<img>标签,这里是蓝色透明的,方便观察覆盖的效果,图片有点模糊,懒得找了 - -!
实际使用时,应该将button_down.png换成你实际的二维码图片。
竖屏时效果

横屏时效果

在Egret实现二维码长按识别的更多相关文章
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
- C# - VS2019 WinFrm程序调用ZXing.NET实现条码、二维码和带有Logo的二维码的识别
前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码的识别. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https: ...
- 分享一个二维码图片识别控制台程序Demo
怎么用NuGet和配置log4net就不介绍了,直接上代码(QRDecodeDemo.zip). (Visual Studio 2015 下的项目,用的.NET Framework 4.5.2) 吐槽 ...
- 微信小程序实战篇-图片的预览、二维码的识别
开篇 今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码,各种翻阅查找,采坑很多,浪费了很多时间,在这里记录下需要注意的点,以及对小程序官方提供的API做一个正确和清晰的认知,希 ...
- C#_WPF中创建二维码、识别二维码
第三方库: WPFMediaKit.dll (WPFMediaKit摄像头处理) zing.dll NuGet安装这两个第三方dll 项目截图预览: 项目代码: using System; using ...
- iOS QRcode识别及相册图片二维码读取识别
https://www.jianshu.com/p/48e44fe67c1d 2016.03.30 10:32* 字数 892 阅读 16197评论 5喜欢 34赞赏 1 最近碰到一个用户 在使用我们 ...
- vue 二维码长按保存和复制内容
效果图: 二维码用了 qrcode.vue npm install qrcode.vue --save 复制内容用了 vue-clipboard2 npm install vue-clipboard2 ...
- spa(单页应用)中,使用history模式时,微信长按识别二维码在ios下失效的问题
spa(单页应用,vue)中,使用history模式时,微信长按识别二维码在ios下失效的问题. 触发条件: spa单页应用: 路由模式 history 从其他页面跳转到带有微信二维码识别的页面(不是 ...
- Android二维码识别 开源项目ZXing的编译
Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ...
随机推荐
- BZOJ 2595 斯坦那树
很久以前就想做,后来弃坑了. 最近又在群里有人问了类似的问题,艾老师说是斯坦纳树(%%%) 就是状压DP,然后用Spfa对状态进行转移. #include <iostream> #incl ...
- SCons - 简单而强大的项目编译脚本
N年前学的makefile,当时还勉强能写一些简单的工程编译,现在已经基本忘了.makefile确实编写复杂,而且平时也不是经常使用,容易忘记.偶识了scons,一切都变的简单了.最近研究了下scon ...
- Javascript 事件(一)
焦点事件获取焦点事件onfocus \ 失去焦点事件 onblur 使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入.我们可以通过一些方式给元素设置焦点 1. ...
- php实现文件下载
<?php $filename = '路径+实际文件名'; //文件的类型 header('Content-type: application/octstream'); //下载显示的名字 he ...
- 第二个Sprint冲刺事后诸葛亮报告
用户反馈:计时的填空题难度过大,计时选择题的画面太亮. 用户数量:4 团队改进建议:bug有点多 工作: 主界面 试卷题,是整合以前的内容的 选择题:也是整合以前功能的 初级的 计时题 1.每个成员第 ...
- js创建对象的6种方式
一.工厂模式 function createStudent(name,age){ var o=new Object(); o.name=name; o.age=age; o.myName=functi ...
- Linux命令行与图形界面切换方法
1.实时切换 1.1 命令行->图形 startx 1.2 图形->命令行 Ctrl+Alt+F1--F6 2.启动默认 2.1 启动进入命令行 修改/etc/inittab文件 &quo ...
- 开发问题(C#)
1. 重新引入dll文件之后,显示黄色感叹号,可能的原因:dll文件受损或者dll版本与工程Framework版本不一致. 2. 错误 232 无法将文件“..\SES.Common\bin\Debu ...
- jQuery的ajax()、post()方法提交数组,参数[] 问题
当用$.ajax()向后台提交参数时,如果参数中数组的话一般在后台会用List,或Integer[] 等数组对象进行接收. 比如: $.ajax({ type: "POST", ...
- HTML Meta标签
Meta标签用于存储web页面上的信息.本质上讲,它是信息数据.他帮助浏览器和搜索引擎更好地知道.理解页面内容. Web开发者,通过Mata标签设置页面描述.作者或关键字等等.然而,许多meta标签功 ...