




既然是给同学们看的东西,所以就不写得那么文字化了,就把自己这一段时间来对编程和学习的体会和大家分享一下。
很多同学看到编程这个字眼之后就会被它吓住,刚开始我也是这样的,记得初学c的时候,写得就只是那几行的代码,很短,但是有时候调那几行的代码也是很困难的事情,比如说遇到一个问题的时候,好像就怎么也解决不了,这时候就想自己不费脑筋而直接把问题抛给别人,这时候有教员在我们身边,所以我们直接可以找他们解决。但是如果教员不在了呢,我们想自己学一些东西的时候呢?问题来了,当我们遇到问题的时候没有人会那么轻易的帮我们解决问题,我们需要自己解决了,这时候该怎么办呢?有时候我们会选择放弃,因为我们觉得实在没有办法解决它了!这时候你就失去了一次学习和进阶的机会,你需要的是有一种不管怎样一定要解决它的决心。这就是我认为的对编程最有用的一种思想。
很多同学问我:“我什么都看不懂怎么办,有没有什么简单的”。其实你看的这些也不是很难,因为你可以找到的东西必然是你通过努力可以学会的东西。你不是看不懂,而是没有把你的屁股放在板凳上,一遇到问题你想到的不是去自己解决它,而是问别人。这时候最需要独立思考的能力,如果你真正自己把这个问题搞懂了一次以后,你以后就能自己解决问题了,你就掌握了方法,而且你也有自信可以去自己解决。下面我来给大家介绍一下方法。
最简单的办法是把问题直接复制到google上,或者百度,不过我的首选是google,我们需要培养的是一种分析资源的能力,我们需要把各种杂乱的资源进行分析和整理,从中找出最有价值的,对我们解决这个问题最有帮助的,其实当你对一个名词不是很理解的时候,你可以看google词条,一般来说基本的词汇都在里面。还有就是得有几个你经常浏览的论坛,在这里面你可以看到最新的关于你学习的方面技术知识,使你的东西不落伍。还有翻阅图书也是很有用的,但是我这里所说的翻阅图书强调的是“翻阅”二字,注意了我们这里不能再像课堂上那样学完整本图书了,因为好多东西对我们并没有太大的作用,我们只需要学习其中的一章或几章,或者只是几个知识点就可以了,这样可以让我们有更强的针对性。
有一点是不推荐大家学习的,那就是视频,我个人觉得看视频没有很强的针对性,因为你得耗时间去看整个内容,很多没用的东西你的忍受着听下去,很浪费时间,反正我是这么认为,时间的利用率太低。有些同学可能会说了,我挑着看,但这样可能会错过这个视频中对你最重要的地方。我想大家看视频主要可能就是一点,就是自己可以不用费太大的力气,听别人讲就行了,说白了就是懒,这种态度在我们学编程的过程中是万万不可有的!!!
还有就是要学会看代码,特别是很长的代码,要坐下来,心静下来,不要一点看不懂就把它扔在一边,那样你就永远也学不会了。不要怕麻烦,我以前也很怕麻烦,一看这么长久不想弄了,心里就告诉自己,反正也学不会,那我就不学了,将来会有机会学的,那你就等着将来吧,将来你还会说将来!!
说了这么多傲慢的话希望大家能从中学到一种方法,关于编程对于我们初学者来说其实就是一点,分析问题和解决问题的方法,如果这一点大家掌握了,那其余的问题你也自然就解决了。这就是我的这个寒假教程要领着大家学会的一种思想,我不是要教会大家什么,而是要把这个思想让每个看我这个教程的同学都掌握,这样大家以后遇到什么问题的时候都会迎刃而解了!!!
大家好,从今天开始我们正式进入javascript的学习,我这节课主要给大家讲解我们这个平台的架设问题,我做了一个教程大家可以下载来看。
我先给大家讲一下我们需要做的这个项目吧,大家可以先去他的官网看一下http://www.openface.org.cn/homePage
就是这里了,其实大家基本了解一下就知道了,这个东西很想我们的网页编程,只是它更底层一些。因为对很多东西没有很好的支持,最典型的就是正则,还有一些函数,他也支持的不是太好,这就意味着我们要从最底层的东西做起,这里面不同于我们网页编程的就是我们在这里需要做的脚本多一些,就是需要完成的操作稍微多一些,但是大家不要误解阿,大家看手机应用程序的首选是什么?这还用问吗?是吧,肯定是界面阿,所以!我们开发的时候特别要注意的就是要让我们的界面更友好一些,也就是更美观一些,我想这对花蝶扇来说肯定很随意了,但当时对我来说就特别困难,因为我本来的美感就不太好,更别说让我去做什么东西了,所以,大家记牢了,布局很重要!这在后面的课程中也会跟大家提起。。。所以不怎么熟悉的同学也不要觉得郁闷!!!
好了,如果对网页编程比较熟悉的同学下面的就可以不看了
我上节课说过,我们这个平台使用的是xml与javascript这两种语言,简单的来说xml是完成对整个程序的一种布局,而javascript是完成这个程序的操作功能,也就是,我们看到的是用xml完成的,操作的是用javascript完成的。但是我们这个程序用到的xml并不是很多,我在这里就不怎么介绍了,一些相关的我会在以后课程中给大家附带着讲解一下。这里我们主要就说一下javascript吧!
他就是一种简单的脚本语言,什么叫脚本语言呢,它不同于我们常用的开发语言比如说c、汇编这些,也就是说它完成的都是一些比较简单的小的操作,他对算法的效率问题要求不是很高,但是它的应用非常灵活,他的用法语c语言很类似,循环阿什么的基本就是一样的,其他的什么废话我也不说了,咱们下节借鉴实例的时候一点一点给大家讲.
大家好!!!!
今天我们正式开始学习javascript语法知识,首先我们先铺垫一些针对于我们openface这个平台的关于xml的基本知识,因为都是出于我自己的想法,所以有些东西可能不是很专业,但我觉得可能方便大家理解。
对于xml我们在这个平台上至需要了解比较基础的一些东西,因为我们在这里只是用xml做一些设计使用。对于每一个应用,我相信看了我的教程的同学们都已经明白怎么构建出一个可以正常使用的应用(这句话有点别扭哈!!)现在我来叫大家怎么写第一个应用。
首先,我们在每一个应用的开头和结尾都要有一个标记,在我们这里就是这样:
1.
复制代码
1.
复制代码
代表程序的开始
1.
复制代码
代表程序的结束
也就是说我们的一个完整的程序必须是这样的:
1.
3. CODE
4.
5.
复制代码
这个道理我们可以应用到每一个标记,每一个标记都有他的开始和结束,比如说
1.
复制代码
等等,这个大家可以提前去openface的官方网站上下一个本地帮助文档,那里说得相当清楚,大家可以提前看一看经常使用的标记。比如说我现在要在收集的屏幕上显示"今天是大年三十",我可以这样写:
1.
复制代码
这样在我们编译好后,在手机上运行的时候就可以显示出来,很简单(注明:我们这里的id是每一个标签里面必须带的,遮掩我们才可以对这个标签进行控制,可以使用javascript对标签进行一系列的操作,,,fontsize是字体大小的意思,fgcolor是字体颜色的意思,,,,,这些东西关靠我说大家是记不住的,关键是自己练!!!!)今天大家回去把
1.
复制代码
这几个标签的用法弄清楚,然后把利民的基本的几个属性搞明白,记住一定要练哦!!!!!
先布置一个作业:在手机模拟器上输出一幅图画,下面显示“我是天才!!”
下面我们讲一些javascript的基本知识,因为考虑到今天的容量有些大,所以少给大家讲一些,其实呢,javascript的语法和我们学习的c很像!!!
我先讲一下变量:我们在这个平台上所有定义的变量都可以这样写 var i,p 等等,不管是整型、字符型。。。还是什么,比如说我定义一个x=5:
1. var x=5;
复制代码
好了,简单吧,不需要我们在考虑什么长整型,浮点型了;
下名我们讲运算符
JavaScript 算术运算符算术运算符用于执行变量与/或值之间的算术运算。
给定 y=5,下面的表格解释了这些算术运算符:
运算符 描述 例子 结果
+ 加 x=y+2 x=7
- 减 x=y-2 x=3
* 乘 x=y*2 x=10
/ 除 x=y/2 x=2.5
% 求系数 (保留整数) x=y%2 x=1
++ 累加 x=++y x=6
-- 递减 x=--y x=4
JavaScript 赋值运算符赋值运算符用于给 JavaScript 变量赋值。
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
运算符 例子 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0
简单吧!!!这我就不一一解释了和c很像的!!
大家好!
不知道上次的作业大家回去做了没有,我来在给大家说几个常用的标签:
1. 1
2. 2
复制代码
第一个是为下面输入文字准备的,第二个是在你的手机屏幕上铺上一层图片
不知道大家掌握了没有,我们还是继续往下讲
今天我们来讲解的内容有:
1、javascript的基本语法知识
2、对象简介
第一个内容,我们通过上次课最后的学习可以明白,c和javascript的语法是十分相近的,在逻辑运算符中,只有一种我们在c里没有见过,那就是全等(===),这个运算符要求值和类型均相等。害怕大家忘记c的知识,我还是把javascript语法知识都贴出来,大家可以参考!!当然,大家已经了解的可以跳过此步!!!
比较运算符比较运算符在逻辑语句中使用,以测定变量或值是否相等。
给定 x=5,下面的表格解释了比较运算符:
运算符 描述 例子
== 等于 x==8 为 false
=== 全等(值和类型) x===5 为 true;x==="5" 为 false
!= 不等于 x!=8 为 true
> 大于 x>8 为 false
< 小于 x<8 为 true
>= 大于或等于 x>=8 为 false
<= 小于或等于 x<=8 为 true
如何使用可以在条件语句中使用比较运算符对值进行比较,然后根据结果来采取行动:
if (age<18) document.write("Too young");您将在本教程的下一节中学习更多有关条件语句的知识。
逻辑运算符逻辑运算符用于测定变量或值之间的逻辑。
给定 x=6 以及 y=3,下表解释了逻辑运算符:
运算符 描述 例子
&& and (x < 10 && y > 1) 为 true
|| or (x==5 || y==5) 为 false
! not !(x==y) 为 true
条件运算符JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
语法variablename=(condition)?value1:value2 例子greeting=(visitor=="PRES")?"Dear President ":"Dear ";如果变量 visitor 中的值是 "PRES",则向变量 greeting 赋值 "Dear President ",否则赋值 "Dear"。
这就是一些基本的东西,大家如果还有什么地方不是很明白的,大家可以来这里看http://www.w3school.com.cn/js/index.asp
下面我给大家说一下我对对象的了解,在我的了解中,对象就是在一个struct中加入了某些实现某种操作的方法,这里所说的方法就是我们常说的函数,具体函数是干什么的,那就需要我们在实践中来使用的过程中来理解,在javascript中我们可以使用语法中已经存在的方法,但是在openface中大多数的属性和方法是可以用的,但是还有一部分需要我们自己实现。废话不多说,我们先来一个例子:
在下面的例子中,我们使用字符串对象的长度属性来计算字符串中的字符数目。
<script type="text/javascript">
var txt="Hello World!"
document.write(txt.length)
</script>上面的代码输出为:
12大家可以看到documen.write其实就是调用了一个方法,调用了document的write方法,这句话的作用在显示器上输出后明设定的东西,txt.length就是测出这个字符串的长度,很清晰吧!
在openface这个平台上,我们可以这样写
1.
2. .
3. .
4. .
5. var txt="Hello";
6. aa.setText(txt.length);
复制代码
好了,我们今天就到这里吧,给大家布置一个作业,用javascript写一个测字符长度的函数
大家好!!!
不知道上回的作业大家都作了没有,我还是硬着头皮往下讲吧!
如果说上回的标签大家都理解了,还有一些基本的脚本大家也都明白了,那我们这次的课就容易了,这次我就简单的那我很早前些的一个例子来给大家讲一下(其实很简单,请大家耐着性子往下看):
1.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24. LzText.setColor(red); /////设置红色的输入框
25. var p; //两个输入框的接收变量
26. var q;
27. var k=parseInt(key); //得到键值的变量
28. switch(k){
29. case 38: //根据监制的不同设置聚焦
30. LzFocus.setFocus(input1); //设置input1的聚焦
31. break;
32. case 40:
33. LzFocus.setFocus(input2); //input2的聚焦
34. break;
35. case 34:
36. q =input1.getText(); //得到两个输入框输入的东西
37. p =input2.getText();
38. if(p=="输入身高:"||q=="输入体重:") //输入为空处理
39. {
40. zhutu.setVisible(false); //把zhutu这个标签设置为不可见,下面的都类似
41. shengao.setVisible(false);
42. tizhong.setVisible(false);
43. xiatu.setVisible(false);
44. gaoyu.setVisible(false);
45. kong.setVisible(true);
46. input1.setVisible(false);
47. input2.setVisible(false);
48. break;
49. }
50. var a=parseInt(input1.getText());
51. var b=parseInt(input2.getText());
52. if(a==((b-100)*9/10)) //根据体重的不同显示不同的东西
53. {//判断体重
54. zhutu.setVisible(false);
55. shengao.setVisible(false);
56. tizhong.setVisible(false);
57. xiatu.setVisible(false);
58. zhenghao.setVisible(true);
59. xiaoyu.setVisible(false);
60. gaoyu.setVisible(false);
61. }
62. else if(a<((b-100)*9/10))
63. {
64. zhutu.setVisible(false);
65. shengao.setVisible(false);
66. tizhong.setVisible(false);
67. xiatu.setVisible(false);
68. xiaoyu.setVisible(true);
69. zhenghao.setVisible(false);
70. gaoyu.setVisible(false);
71. }
72. else
73. {
74. zhutu.setVisible(false);
75. shengao.setVisible(false);
76. tizhong.setVisible(false);
77. xiatu.setVisible(false);
78. gaoyu.setVisible(true);
79. zhenghao.setVisible(false);
80. xiaoyu.setVisible(false);
81. }
82. break;
83. }
84. ]]>
85.
86.
复制代码
这个例子为了让大家容易理解尽量写的简单,大家把这个看懂了,以后我们讲别的就容易了,大家抓紧看一下,有什么不懂得提出来。
如果上次给大家的代码大家都看得比较清楚的话,我相信你会对这个手机的项目有了一顶的了解,并可以自己写出一些东西了,这节课呢我就是来给大家讲一下进阶的东西!!
讲点实用的吧,首先我们将动画的制作,这个学好了,我们就可以做一些简单的游戏!!
例如,下面的应用为view 定义了动画,使它在1 秒内运动到‘x’
是100 的位置。animator 是类LzAnimator 的实例,并且通过使用
这个例子可以是我们的图像作水平的运动,当然如果要改为竖直的运动只需将x属性改为y,要让时间长一些短一些呢,我们就可以改变duration的值。
制定启动条件
动画在默认的情况下通过变速改变对象的属性值从‘from’到‘to’。运行上例会展示一个变速移动的视图。该非线性行为可以通过使用motion 属性得到最小限度的控制。
例如,下例展示view 线性的在屏幕上移动的效果,和上例形成对比。motion 属性的取值可以是:开始慢并减速,开始慢并加速,开始快并减速,匀速。
线形运动
下例中展示了按任意键来激活动画,而不是初始时实例动画。可以通过设置start 属
性值为false 初始动画为静止状态,继而通过调用start()方法来激活动画。
动画也可以相对他们当前的位置来移动对象。这意味着目的位置实际
是‘to’的值加上对象的当前值。运行上面的例子并设置relative
属性的值是true,创建一个每次按任意键都向右移动100 像素的视
图。
这次的作业,大家回去设计一个自己的动画
感谢 张峻铭 供稿!希望能够帮助更多的人尽快的熟悉openface !
更多交流请加入openface开发QQ群:66126992