imag.js|教你如何智做原生APP

手机计算器是我们日常中很熟悉并且使用起来非常简单的应用了,这样的应用在爱码哥平台中又该如何开发呢?

结合这个原型图和imag.js现有的布局控件大致有两种解决思路。

第一种:使用list列表布局

底部使用list列表标签进行布局,共4个item,每个item中有5列col,在col中加入文本标签label,也可以把label替换成button。共20列,每一列不用设置长度,会自动平均分配给每一个col。

结构图如下:

代码结构是(其余三个item复制就好):

<list>
	<item>
    	<col><label></label></col>
        <col><label></label></col>
        <col><label></label></col>
        <col><label></label></col>
        <col><label></label></col>
    </item>
</list>

这个结构相当于一个骨架,余下的就是编写内容了。

第二种:使用九宫格grid布局

底部使用网格布局控件grid,共20个item,每个item中有一个文本标签label。相对于第一种方法会更简单,代码量也少,可复制性强。

结构图如下:

代码结构(其余item也是复制即可):

<grid cols="5">
	<item><label></label></item>
        <item><label></label></item>
</grid>

Grid网格布局默认九宫格样式,每行自动匹配3个item,如果要求在3个以上,需要设置grid的cols属性。

布局确定了,下面整理逻辑部分

网上有很多Android和iOS计算器的源码,其中Android计算器源码需要加入onClick来实现按钮功能,又提供了按钮的监听事件。同样在imag.js也要onclick来实现点击的功能,但不需要监听事件,同时onclick作用的是grid列表中的item,不是按钮button。

js核心代码:

<script>
    <![CDATA[
        var num=0,result=0,numshow="0";
        var operate=0; //判断输入状态的标志
        var calcul=0; //判断计算状态的标志
        var quit=0; //防止重复按键的标志
        var ScreenValue = $(’numScreen’).value;
        function refresh_Screen(){
            $(’numScreen’).value = ScreenValue;//刷新显示
        }
        function command(num){
            var str=ScreenValue; //获得当前显示数据
            if(str!=’0’&&operate==0){
                str = str;
            }else {
                str = ’’;
            }//如果当前值不是"0",且状态为0,则返回当前值,否则返回空值;
            str=str + String(num);//给当前值追加字符 

            ScreenValue=str;
            refresh_Screen();//刷新显示
            operate=0; //重置输入状态
            quit=0; //重置防止重复按键的标志
        }
        function dzero(){
            var str=ScreenValue;
            if(str!=’0’&&operate==0){
                str = str + ’00’;
            }else {
                str = ’0’;
            }//如果当前值不是"0",且状态为0,则返回当str+"00",否则返回"0";
            ScreenValue=str;
            refresh_Screen();
            operate=0;
        }
        function dot(){
            var str=ScreenValue;
            if(str!=’0’&&operate==0){
                str = str;
            }else {
                str = ’0’;
            }//如果当前值不是"0",且状态为0,则返回当前值,否则返回"0";
            for(i=0; i<=str.length;i++){ //判断是否已经有一个点号
                if(str.substr(i,1)==".") return false; //如果有则不再插入
            }
            str=str + ".";
            ScreenValue=str;
            refresh_Screen();
            operate=0;
        }
        function del(){ //退格
            var str=ScreenValue;
            str=str.substr(0,str.length-1);
            ScreenValue=str;
            refresh_Screen();
        }
        function clearscreen(){ //清除数据
            num=0;
            result=0;
            numshow="0";
            ScreenValue="0";
            refresh_Screen();
        }
        function plus(){ //加法
            calculate(); //调用计算函数
            operate=1; //更改输入状态
            calcul=1; //更改计算状态为加
        }
        function minus(){ //减法
            calculate();
            operate=1;
            calcul=2;
        }
        function times(){ //乘法
            calculate();
            operate=1;
            calcul=3;
        }
        function divide(){ //除法
            calculate();
            operate=1;
            calcul=4;
        }
        function persent(){ //求余
            calculate();
            operate=1;
            calcul=5;
        }
        function equal(){
            calculate(); //等于
            operate=1;
            num=0;
            result=0;
            numshow="0";
        }
        //
        function calculate(){
            numshow=Number(ScreenValue);
            if(num!=0 && quit!=1){ //判断前一个运算数是否为零以及防重复按键的状态
                switch(calcul){ //判断要输入状态
                    case 1:result=num+numshow;break; //计算"+"
                    case 2:result=num-numshow;break; //计算"-"
                    case 3:result=num*numshow;break;
                    case 4:if(numshow!=0){result=num/numshow;}else{hint("被除数不能为零!")} break;
                    case 5:result=num%numshow;break;
                }
                quit=1; //避免重复按键
            }
            else{
                result=numshow;
            }
            numshow=String(result);
            ScreenValue=numshow;
            refresh_Screen();
            num=result; //存储当前值
        }
    ]]>
</script>

在爱码哥平台中创建一个应用,把完整代码复制到云端开发中并保存,一个简单的计算器应用就搞定了。结合爱码哥开发版http://www.imagapp.com/workbeanch随时查看效果图

完整代码可参考https://github.com/imagjs/Calculator

快速熟悉掌握imag.js可观看视频教程

http://www.soku.com/search_video/q_imag.js?f=1&kb=040200000000000__imag.js&_rp=1aqb971al1lkv&_rp=1aqb971al1lkv

时间: 2024-10-20 11:59:00

imag.js|教你如何智做原生APP的相关文章

开发技巧汇总|对于imag.js你不知道的事

1.imag.js里有哪些标准JavaScript对象? imag.js里的标准JavaScript对象有Object, Function, Array, Boolean, Date, Math, Number, String, RegExp,Global Functions, JSON. 2.为什么客户端会提示XML语法错误? imag.js的代码文档遵循严格的XML语法规范,开发时要注意以下地方: 1. label, script, web等标签的text可能含有XML特殊符号<.&,

关于使用imag.js出现的问题及解决方法(连载2)

imag.js是一种NativeScript形式的框架,它兼具 Web 应用的灵活和 Native 应用的高性能,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用Native抽象操作系统原生的 UI 组件,并内置一体化框架,结合 Java..Net.php和HTML5等主流开发语言/开发环境来写XML语法.敲一次代码,能够运行在多个平台上,平台同时融合第三方API以及模板服务. 根据爱码哥用户反馈的问题及我们团队给予的解决办法进行了详细

12岁的少年教你用Python做小游戏

原地址:http://blog.jobbole.com/46308/ 本文由 伯乐在线 - 贱圣OMG 翻译自 Julian Meyer.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [感谢@贱圣OMG 的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将会用Python.好吧,我

才决定学JS小鱼又被拉去做设计了

才决定学JS,注册了博客,小鱼又被拉去做设计了,又要大半个月没时间碰这些了,愁死我了 才决定学JS小鱼又被拉去做设计了,布布扣,bubuko.com

JS读取UserAgent信息并做判断

JS读取UserAgent信息并做判断 userAgent信息可以由navigator.userAgent拿到.例子: <script type="text/javascript"> document.writeln("navigator.userAgent: " + navigator.userAgent + "<br />"); document.writeln("navigator.appName: &qu

react.js 教程之 Installation 安装

react.js 教程之 Installation 安装 运行方法 运行react有三种方式 1.如果你只是学习react,可以在http://codepen.io/gaearon/pen/rrpgNB?editors=0010上只写写代码 2.如果你想用自己的编辑器,https://facebook.github.io/react/downloads/single-file-example.html可以下载这个html文件,直接编写代码,编译速度很慢 3.如果是自己开发app,可以通过安装cr

h5做app和原生app有什么区别?

H5开发的web APP和原生APP的区别有以下几个方面:一.开发方面 原生App ⊙ 每一种移动操作系统都需要独立的开发项目⊙ 每种平台都需要独立的开发语言.Java(Android), Objective-C(iOS)以及Visual C++(Windows Mobile)等等⊙ 需要使用各自的软件开发包,开发工具以及各自的控件 移动Web App⊙ 因为运行在移动设备的浏览器上,所以只需要一个开发项目⊙ 这种应用可以使用HTML5,CSS3以及JavaScript以及服务器端语言来完成(P

教你用java做个微信红包,自己做运气王!

java微信红包 微信是如今人们日常生活离不开的app,日常交流,小额转账,视频通话等都很方便.微信红包也是人们使用得最多的功能,朋友一起出去吃个饭,饭后AA用微信红包:逢年过节,给亲朋好友发个红包--这篇文章教你用java做个红包小项目!注意事项因为金额涉及到分,小数点后保留两位,数值类型的转换操作需要注意:此中方案相对简陋,并未实现每次红包最大值在0.01-剩余红包均值的2倍间:/* 红包设计要求: 1-红包最小值为0.01,最大值为200 2-红包的金额面值为小数点后两位 3-避免单个红包

手把手教你用C#做疫情传播仿真

原文:手把手教你用C#做疫情传播仿真 手把手教你用C#做疫情传播仿真 姐妹篇:手把手教你用C#做疫情传播仿真 产品经理版 在上篇文章中,我介绍了用C#做的疫情传播仿真程序的使用和配置,演示了其运行效果,但没有着重讲其中的代码. 今天我将抽丝剥茧,手把手分析程序的架构,以及妙趣横生的细节. 首先来回顾一下运行效果: 注意看,程序中的信息,包含信息统计.城市居民展示和医院展示三个部分,其中居民按状态的不同,显示为不同的颜色. 本文将先从程序员的角度,说说程序中的实现细节,细节中会聊一聊与与Java版