要是不能认真将个人的感受做好表达抒发,那么写出的体会就很难给人带来启发,只有将自己的感受梳理好,才可以写出优秀的体会,小编今天就为您带来了飞机杯心得体会5篇,相信一定会对你有所帮助。
开发登录界面、设计地图加载、子弹飞机的加载、主控制程序的开发登录界面的开发,通常是在界面上显示游戏菜单选项,用户可根据菜单项选择需要的操作。菜单项是和游戏的功能紧密相关的。手机游戏的开发往往在界面和操作方式上有较高的要求,javame提供了低级界面开发的api,可用于游戏开发。低级界面画布类主要有canvas和gamecanvas,其中canvas是属于midp1.0,gamecanvas则是属于midp2.0。低级用户界面技术为用户提供了灵活的开发方法,可以进行一些较为底层的操作,例如:按键的处理事件更为丰富,组件位置的设置更为灵活。手机上的屏幕坐标系和我们常规数学的坐标系不相同。对于坐标(x,y),若x值越大,则越向右,y值越大,则越向下。对于飞机射击游戏,飞机在飞行过程中经过不同的地理环境,例如大海、小岛、石礁等作为地图的背景。地图的宽度通常要求能够自动匹配不同类型的手机宽度,高度则是以一个关卡所需的时间为依据进行设计。在此我们采用简化操作方法,给地图宽度和高度设置一个具体值。子弹的射击应该支持不同的方向,例如我方飞机自下而上发射子弹,敌方飞机自上而下发射子弹。当子弹与飞机碰撞之后,飞机的血量相应地要减少,如果飞机的血量为0,则产生爆炸效果,子弹和飞机都消失。飞机主角在开始游戏时出现在屏幕最底部的中间处,玩家可以通过上、下、左、右键控制其飞行方向,按下确认键后可以发射子弹。敌机在游戏开始后从背景上部出现,飞行,并发射子弹。在本任务中需要考虑敌机出现的位置,出现的数量和频率,飞行的速度和子弹的发射方向。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
游戏主框架的首要模块的安排:
1.游戏的初始化。主要是完成游戏资源的加载,各种游戏对象、变量取值的初始化,游戏运行环境的获取和设置,历史记录的读取等。
2.游戏的主循环。执行游戏处理的主要代码,直到满足退出要求才停止循环,例如:玩家选择退出游戏,玩家游戏失败,玩家最终完成游戏等。主要实现分为三步:(1)获得游戏的输入信息;(2)处理游戏的逻辑;(3)更新游戏的画面
3.退出游戏
canvas为抽象类,负责图形图像的绘制和用户交互。进行低级玩家界面的开发通常需要继承canvas类,主要方法如下:
1.getheight():获取canvas绘图区域的高度。
2.getwidth():获取canvas绘图区域的宽度。
3.paint(graphics g):渲染画布,向屏幕画图,通常将画图的操作放在该方法中实现。当屏幕需要重新绘制时,javame主线程会自动调用paint方法,程序员不能在代码中直接声明调用该方法。
4.repaint():主动向系统请求刷新界面,具体的刷新操作实际是通过调用paint方法来完成。
5.isdoublebuffered():判断手机设备是否匹配双缓冲。有些手机匹配双缓冲技术,有些则不匹配。
6.getgameaction(int keycode):将手机的键值切换为游戏动作。
7.getkeyname(keycode):得到按键的名字。
graphics提供2d渲染能力,作用是在屏幕上绘制图形,类似于一支画笔。
graphics绘制的图形不能够直接显示,必须通过canvas或gamecanvas才能显示在屏幕上,因此canvas和gamecanvas类似于可以显示图形的画布
graphics类支持绘制图形主要包括以下3种:
(1)文本:可以设置文本的颜色、字体大小等
(2)图像:可以直接绘制图像文件或者从缓存中绘制
(3)2d几何图形:绘制点、直线、平面图形等
graphics类没有构造方式,获取对象的途径有3种:
1.canvas类中的paint方法有一个graphics对象参数,系统会自动调用paint方法,并传进一个graphics对象,因此可以在paint方法中使用graphics对象编写绘图代码。
2.在gamecanvas类中通过getgraphics方法来获取一个graphics对象,因此可以在要求的地方灵活地编写与绘图有关的代码。
3.image对象的getgraphics()方法得到graphics对象,可用于编写双缓冲区代码。
1.直接用整幅图片作为背景,再在上面重叠一层加入物件、摆设等,优点在于图形相对丰富、漂亮,但消耗资源较多,受手机硬件条件的影响不能做太大的图。
2.游戏地图是用一个个图块重复拼接成,而在程序中就可以通过一个较小的图像文件和一个二维数组,绘制出一幅较大的地图。具体的做法是将图像文件划分为若干个相同大小的图块(一般每个图块是16像素× 16像素或者32像素 ×32像素),每个图块给一个索引值,例如:1表示草地图块,2表示砖头图块。而二维数据中记录的数字就是图像文件中的图块索引值,例如:某个数组元素的数值若为1,则表示在此处画草地。此方法的益处在于比较节约系统资源,可做出来的地图相对比较一般。
地图编辑器能够帮助将地图最后转变成程序直接使用,所以一个好的地图编辑器能够加速游戏的开发周期。
业界已经推出多款地图编辑器,例如mappy(mapwin)、tiled、tilestudio等,其中mappy功能比较强大,可以很方便地对2d地图进行编辑。
下载mayppy软件:http:/ / .tilemap.uk /mappy
假如需支持png图片,那么还需下载两个dll文件,这两个文件也都放在mappy软件的网址上
zlib.dll用于文件压缩
libpng12.dll是png图像压缩库
将这两个文件下载复制到mappy可执行文件的同一个目录下即可,否则在导入png文件时,会报图5-23的错误
制作游戏还需要用到图像素材,因此除了mappy软件之外,还需要用到图像处理软件photoshop来制作原始游戏素材。
j2se中提供了多个接口和类管理集合,例如有collection、list、set、map接口,实现接口的集合类有linkedlist、arraylist、vector、hashtable、hashmap和weakhashmap类。
在javame中只有java.util包提供vector类,其功能和j2se的vector类似,实现的是一个动态增长的数组,可以在程序代码中调整或者裁减集合的大小,能向集合插入、删除和修改元素。
每一个集合中的元素都被分派一个整数索引号,能够直接根据索引号插入和删除一个元素,也能够修改和得到一个元素的值。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
寒假的第一天,爸爸告诉我,要带我坐飞机,我高兴得简直心都快要跳出来了。第二天一早,爸爸妈妈刚上班,我就迫不及待地在爸爸电脑桌里找到了两张飞机票,小心地捧在手心里,很怕它们飞了似的,心里别提有多美了!
正巧,下午小表弟来了。我急忙拿出飞机票,很得意地摆列在他面前。小弟羡慕地看着我,因为他跟我一样,也没坐过飞机。突然,他问:“姐姐,那你怕不怕呀?”这下可把我问住了,这个问题我还没来得及考虑。我只得勉强地说:“当然不怕了。”其实呀,我心里还真有点儿打鼓呢。
等呀,盼呀,终于等到了出发的那一天,我真恨不能一步就跨到哈尔滨飞机场。
大约8点,我和爸爸坐机场大巴到了哈尔滨太平国际机场。这是一座豪华而壮观的国际化飞机场,场地非常开阔,工作人员正紧张地忙碌着,一切井然有序。因为时间的关系,我和爸爸只匆匆忙忙地拍了几张照片留念,便准备登机了。就在刚要登上飞机的那一刻,我突然害怕起来,心“扑通、扑通”直跳。爸爸有力的大手轻轻拍了我一下,我震惊了许多,一边给自己鼓劲儿,一边在心里说:“胆小鬼,有什么可怕的,还有爸爸呢。”这么一想,恐惧感就小了许多。我勇敢地跨出一步,登上了飞机。机乘人员有序地把我们带到了座位上。原来飞机舱跟火车车厢差不多,一排排的座椅,一个个的小窗户,从远处看,这些小窗户排起来就像一条毛毛虫了。机身中间较靠前的位置,有一对大翅膀,每个翅膀下有一个大发动机。
“呼——”飞机启动了。它先慢慢地在机场跑道滑行,然后越来越快,随之,飞机前轮离开地面,后轮也紧跟着离开地面,伴随着“啊”的一声(当然,是我心里偷偷发出来的哦),这时整个飞机都属于倾斜状态。飞机越升越高,爸爸问我怕不怕,我不好意思地笑笑说“还行”,其实,刚起飞时,我的心都快要掉下来了。这时,我把头转向窗外,啊!我已经在云彩上面了。一朵朵浓的、淡的白云漂浮着,看起来毛绒绒的,就在我身边不远处,千姿百态,哇!真想伸手去摸摸。
再看看大地吧,大片大片被积雪覆盖的田地,高楼林立的城市,转眼之间都变成了一个一个的图形、线条。这一切太神奇了!大海、大河好像我一步就能跨过去,大山好像一个积木,高楼就像一只小蚂蚁……我多想把这些都告诉姥姥和妈妈呀!让她们跟我一起高兴、一起快乐。可是,飞机上不能开手机,我没法给她们发信息、打电话,真遗憾。下飞机,我一定要告诉她们……突然,飞机好像向左倾了一下,原来这是在转弯。爸爸还告诉我:向右倾就是右转弯,向左倾就是左转弯,就和划船一样,真有趣!
一个小时后,飞机经停青岛流亭机场。
四个小时后,窗外突然白茫茫一片,咦!怎么什么也看不见了?爸爸说:“我们要穿过云层,开始降落了。”我看着眼前的白云,心里一半伤心、一半快乐。伤心的是因为我要下飞机了,高兴的是我终于要到温州了、要看到爷爷奶奶了。
穿过云层后,我又看到了大地。但这里的大地已经不是冰天雪地了,而是遍地绿色。慢慢地,楼越来越高、汽车也越来越大。这时,我看见了一行字“温州欢迎您”,唉!我们该降落了。我感到机身微微震了一下,后轮着地了,前轮在空中悬了一会也着地了。滑行了一段距离,飞机稳稳地停了下来。唉,我们也该下飞机了……我将永远记住这一次难忘的旅行。我也盼望着,下一次还能有机会坐飞机!
线程:进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。线程:进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。 线程和进程的区别如下:1)一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。2)线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。3)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用来实现进程的调度和管理以及资源分配。
2 简述线程的状态及其转换 1)new,创建一个线程,但是线程并没有进行任何的操作。2)runnable,新线程从new状态,调用start方法转换到runnable状态。线程调用start方法向线程调度程序(jvm或者是操作系统)注册一个线程,这个时候一切就绪只等cpu的时间。3)running,从runnable状态到running状态,线程调度根据调度策略的不同调度不同的线程,被调度执行的线程进入running状态,执行run方法。4)dead状态,从running状态到runnable,run方法运行完毕后,线程就会被抛弃,线程就进入dead状态。5)block状态,从running状态到block状态,如果线程在运行的状态中因为i/o阻塞、调用了线程的sleep方法以及调用对象的wait方法则线程将进入阻塞状态,直到这些阻塞原因被结束,线程进入到runnable状态。
3 简述线程的两种创建方式以及它们的区别 创建线程的两种方式:1)使用thread创建线程。thread类是线程类,其每一个实例表示一个可以并发运行的线程。我们可以通过继承该类并重写run方法来定义一个具体的线程。其中重写run方法的目的是定义该线程要执行的逻辑。启动线程时调用线程的start()方法而非直接调用run()方法。start()方法会将当前线程纳入线程调度,使当前线程可以开始并发运行。当线程获取时间片段后会自动开始执行run方法中的逻辑。2)使用runnable创建线程。实现runnable接口并重写run方法来定义线程体,然后在创建线程的时候将runnable的实例传入并启动线程。两种创建线程方式的区别: 使用thread创建线程,编写简单,可以直接操纵线程,无需使用thread.currentthread(),但是不能够再继承其他类。使用runnable创建线程可以将线程与线程要执行的任务分离开减少耦合,同时java是单继承的,定义一个类实现runnable接口,这样该类还可以继承自其他类。
多线程实现方法
使用thread创建线并启动线程
java.lang.thread类是线程类,其每一个实例表示一个可以并发运行的线程。我们可以通过继承该类并重写run方法来定义一个具体的线程。其中重写run方法的目的是定义该线程要执行的逻辑。启动线程时调用线程的start()方法而非直接调用run()方法。start()方法会将当前线程纳入线程调度,使当前线程可以开始并发运行。当线程获取时间片段后会自动开始执行run方法中的逻辑。
public class testthread extends thread{
@override
public void run() {
for(int i=0;it;100;i++){
system.out.println("我是线程");
}
}
}
创建预启动线程
…
thread thread = new testthread();//实例化线程
thread.start();//启动线程
…
使用runnable创建并启动线程
实现runnable接口并重写run方法来定义线程体,然后在创建线程的时候将runnable的实例传入并启动线程。这样做的好处在于可以将线程与线程要执行的任务分离开减少耦合,同时java是单继承的,定义一个类实现runnable接口这样的做法可以更好的去实现其他父类或接口。因为接口是多继承关系。
public class testrunnable implements runnable{
@override
public void run() {
for(int i=0;it;100;i++){
system.out.println("我是线程");
}
}
}
启动线程的方法:
…
runnable runnable = new testrunnable();
thread thread = new thread(runnable);//实例化线程并传入线程体
thread.start();//启动线程
…
使用内部类创建线程
通常我们可以通过匿名内部类的方式创建线程,使用该方式可以简化编写代码的复杂度,当一个线程仅需要一个实例时我们通常使用这种方式来 创建。 例如:继承thread方式:
thread thread = new thread(){ //匿名类方式创建线程
public void run(){
//线程体
}
};
thread.start();//启动线程
runnable方式:
runnable runnable = new runnable(){ //匿名类方式创建线程
public void run(){
}
};
thread thread = new thread(runnable);
thread.start();//启动线程
线程的方法
currentthread:方法可以用于获取运行当前代码片段的线程
thread current = thread.currentthread();
获取线程信息 thread提供了 获取线程信息的相关方法: long getid():返回该线程的标识符 stringgetname():返回该线程的名称 int getpriority():返回线程的优先级 thread.state getstate():获取线程的状态boolean isalive():测试线程是否处于活动状态 boolean isdaemon():测试线程是否为守护线程 booleanisinterrupted():测试线程是否已经中断
线程优先级
线程的切换是由线程调度控制的,我们无法通过代码来干涉,但是我们可以通过提高线程的优先级来最大程度的改善线程获取时间片的几率。线程的优先级被划分为10级,值分别为1-10,其中1最低,10最高。线程提供了3个常量来表示最低,最高,以及默认优先级:thread.min_priority, thread.max_priority, thread.norm_priority 设置优先级的方法为:
void setpriority(int priority)
守护线程
守护线程与普通线程在表现上没有什么区别,我们只需要通过thread提供的方法来设定即可: __void setdaemon(boolean )__当参数为true时该线程为守护线程。 守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。 gc就是运行在一个守护线程上的。需要注意的是,设置线程为后台线程要在该线程启动前设置。
thread daemonthread = new thread();
daemonthread.setdaemon(true);
daemonthread.start();
sleep方法
thread的静态方法sleep用于使当前线程进入阻塞状态: __static void sleep(long ms)__该方法会使当前线程进入阻塞状态指定毫秒,当指定毫秒阻塞后,当前线程会重新进入runnable状态,等待分配时间片。该方法声明抛出一个interruptexception。所以在使用该方法时需要捕获这个异常 改程序可能会出现"跳秒"现象,因为阻塞一秒后线程并非是立刻回到running状态,而是出于runnable状态,等待获取时间片。那么这段等待时间就是"误差"。所以以上程序并非严格意义上的每隔一秒钟执行一次输出。
yield方法:
thread的静态方法yield: __static void yield()__该方法用于使当前线程主动让出当次cpu时间片回到runnable状态,等待分配时间片。
join方法
__void join()__ 该方法用于等待当前线程结束。此方法是一个阻塞方法。 该方法声明抛出interruptexception。
线程同步
synchronized关键字 多个线程并发读写同一个临界资源时候会发生"线程并发安全问题“ 常见的临界资源: 多线程共享实例变量多线程共享静态公共变量 若想解决线程安全问题,需要将异步的操作变为同步操作。 所谓异步操作是指多线程并发的操作,相当于各干各的。所谓同步操作是指有先后顺序的操作,相当于你干完我再干。
同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块这个比较难理解故写了下面代码帮助理解
/__
_ 多线程并发安全问题
_ 当多个线程同时操作同一资源时,由于
_ 线程切换时机不确定,导致出现逻辑混乱。
_ 严重时可能导致系统崩溃。
_ @author ylg
_
_/
public class syncdemo1 {
public static void main(string[] args) {
/_
_ 当一个方法中的局部内部类想引用该方法
_ 的其他局部变量时,这个变量必须被声明
_ 为final的
_/
final table table = new table();
thread t1 = new thread(){
public void run(){
while(true){
int bean = table.getbean();
thread.yield();//模拟线程切换
system.out.println(
getname()+":"+bean
);
}
}
};
thread t2 = new thread(){
public void run(){
while(true){
int bean = table.getbean();
thread.yield();//模拟线程切换
system.out.println(
getname()+":"+bean
);
}
}
};
t1.start();
t2.start();
}
}
class table{
//20个豆子
private int beans = 20;
/__
_ 当一个方法被synchronized修饰后,该方法
_ 成为"同步方法"。多个线程不能同时进入到
_ 方法内部。
_ @return
_/
public synchronized int getbean(){
if(beans==0){
throw new runtimeexception("没有豆子了!");
}
thread.yield();//模拟线程切换
return beans--;
}
}
/__
_ 有效的缩小同步范围可以保证在
_ 安全的前提下提高了并发的效率
_ @author ylg
_
_/
public class syncdemo2 {
public static void main(string[] args) {
final shop shop = new shop();
thread t1 = new thread(){
public void run(){
shop.buy();
}
};
thread t2 = new thread(){
public void run(){
shop.buy();
}
};
t1.start();
t2.start();
}
}
class shop{
/_
_ 在方法上使用synchroinzed,同步监视器对象即当前方法所属对象:this
_/
// public synchronized void buy(){
public void buy(){
try{
thread t = thread.currentthread();
system.out.println(t+"正在挑选衣服..");
thread.sleep(5000);
/_
_ 同步块可以缩小同步范围。
_ 但是必须保证"同步监视器"即:"上锁对象"是同一个才可以。
_ 通常,在一个方法中使用this所谓同步监视器对象即可。
_/
synchronized (this) {
system.out.println(t+"正在试衣服..");
thread.sleep(5000);
}
system.out.println(t+"结账离开");
}catch(exception e){
}
}
}
/__
_ synchronized也成为"互斥锁"
_ 当synchronzed修饰的是两段代码,但是"锁对象"相同时,这两段代码就是互斥的。
_ @author ylg
_
_/
public class syncdemo4 {
public static void main(string[] args) {
final boo b = new boo();
thread t1 = new thread(){
public void run(){
b.methoda();
}
};
thread t2 = new thread(){
public void run(){
b.methodb();
}
};
t1.start();
t2.start();
}
}
class boo{
public synchronized void methoda(){
thread t = thread.currentthread();
system.out.println(t+"正在调用方法a");
try {
thread.sleep(5000);
} catch (interruptedexception e) {
}
system.out.println(t+"调用方法a完毕");
}
public synchronized void methodb(){
thread t = thread.currentthread();
system.out.println(t+"正在调用方法b");
try {
thread.sleep(5000);
} catch (interruptedexception e) {
}
system.out.println(t+"调用方法b完毕");
小时候,爸爸曾答应在我10岁之前一定要带全家人到海南去玩儿一趟。可这话也说过去好几年了,眼看着我11岁的生日也步步临近。“还整天给我说人要重守承诺,到时看怎么给人家解释”我心中暗暗嘀咕。“到那天,我们将乘早7:30北京至海口的航班飞过去”!当爸爸告诉我09年1月30日将去海南旅游的消息时,我异常激动,按捺不住竟手舞足蹈欢呼雀跃起来。提前几天就把自己的衣物整理好,剩下的就是天天掰着指头盼望着1月30日的到来,同时还在想坐飞机到底是什么滋味呢?汽车、火车、轮船我都坐过,飞机也不会奇特到哪儿吧?
1月30日凌晨4点,我和爸爸妈妈就早早地起了床,手脚利索地洗漱完毕。5点多就出门儿了,北三环上车辆很少,我们乘的出租半个小时左右就到了首都机场3号航站楼。刚一迈进航站楼的大门,我就被大厅宏伟的气势震慑住了:机场的宽阔我早就有所耳闻,可没有想到竟是这般的壮观。整个大厅由上百根高大粗壮的柱子支撑着,柱与柱前后左右的距离不下五十米,我大张着嘴巴,一个航站楼的面积该有多大呀!
凌晨6点,机场大厅里早已熙熙攘攘人头攒动起来,人们分别在各个航空公司的柜台前办理登机前的手续。爸爸妈妈却带着我来到了登机自动受理电脑前,他们进行了一步步的操作后,电脑竟自动打印出了三张印有航班和个人信息的卡片,这就是所谓的登机牌呀!我定睛细看,上面写着班次、日期、座号、舱位、姓名、登机口、登机时间、离港机场、到港机场、电子票号……嗬!没想到一张小小的卡片包含了这么多信息,也许这就是人们所说的小物有大用吧!下一项手续就该办行李托运了,国航工作人员打印出了两张印有相同编号的卡片,一张贴在行李上,另一张交给了我们。我们离开了,可怜的行李却被一条传送带给带走了。登机前最复杂的手续莫过于安检了,人们要把随身携带的钱包、手机、手提袋、钥匙等物放到传送带上的一个塑料筐里通过安检。人们则通过一个设有电子检测系统的门后由工作人员进行检查。通过安检门的时候,你身上的任何一个金属物件都会引起系统的注意,比如扣子、拉链之类的物品。于是,你的全身上下便会被一根近似于椭圆形,像棒锤一样的东西扫一遍,然后才能放行。
通过这些手续,终于来到了候机室。我向窗外眺望,看到停机坪上停着好多架飞机,它们可比我的玩具飞机大多了!想到自己一会儿就要坐在这个庞然大物的“肚子”里,我感到全身的血都在往头上涌,高兴得不得了。凌晨7点,当显示屏上显示我们乘坐的航班开始登机时,我兴奋地一下子从椅子上跳了起来。检过机票,我一溜烟儿冲进了登机门,来回拐了几个弯儿后,我终于踏在了飞机坚实的身体上。我们乘坐的是波音777飞机,里面有两个走道,九列座位,让人一点儿都不觉得压抑。爸爸说我第一次坐飞机,就把靠舷窗的位置让给了我。坐下后扣好安全带,闭上眼睛竟觉得像坐在自己家里的沙发上一样舒服!我开始检查起我位置上配备的东西:一副耳机、一条毛毯、一本杂志和一个靠垫,前面还有一个可收起放下的小桌板。飞机上还有好多台电视,通过屏幕空姐正在给乘客做着遇到紧急情况时应对的方法。不知怎么此时我的内心竟有点儿忐忑不安起来。
接到飞机可以起飞的指令,我们的飞机便开始沿着跑道在地面上跑了起来。走到一个拐弯儿处,飞机猛地一停,还没有等我反应过来,飞机便开始加速。飞机越跑越快,外面的景物越来越不清楚。突然,我感到身体轻飘飘的,往舷窗下面一看,我们飞起来了!我向远处眺望,看见了航站楼、飞机场和我们刚刚起飞的地方。地面上的一切越来越小,直到缥缈的云雾将它们全部遮住。突然,一道金光射到了我的眼睛里,我不禁皱了一下眉头。抬头一看,一个红点从东方冉冉升起,那不是太阳吗?太阳很快占据了天空,白云在它的照耀下放射出金光,我终于明白了流光溢彩这个词语的含义。此时的我感觉像极了一只在空中自由翱翔的小鸟,上面是湛蓝的天空,下面是洁白的云团。空中地上视角不同,竟有了天壤之别。
10分钟后,飞机上开始供应食品和饮料,虽然和地面上的没什么两样,可我竟觉得口中的食物如此鲜美可口!慢慢的,我们已经升到了万米高空,屏幕上显示舱外温度为零下58摄氏度。天啊,我不由得打了一个冷战,这温度把我冻成冰棍都绰绰有余!3个小时很快过去了,飞机逐渐开始降落,我的耳朵感到越来越不适,非常疼。按照爸爸教我的方法,拼命咽口水,打哈欠,这样才好受一点。飞机一个大转弯,又向下降了,我透过窗户看到下面的土壤竟是红色的,我感觉自己好像已经挨到它们了一样。不知不觉,飞机已经落地了,而我还沉浸在飞翔的快乐之中。直到我看到了灰色的水泥地才明白我们已经到站了,2800余公里的旅途在飞机上竟是如此的短暂。
终于踏到了海南坚实的土地上,我感到这里的空气异常清新,像一个天然的大氧吧!可是这个大氧吧好像发怒了,红彤彤的太阳燎得人身上生疼生疼的,不换上短袖还真是受不了!可转眼间,炎热感就被下午即将开始的旅行冲淡了……
7月13日星期一,我早早地就上床睡觉了,因为妈妈告诉了我一个振奋人心的消息,明早要带我去新郑机场乘机飞往大连旅游。这可是我第一次坐飞机,以前总是在电视中看到飞机,明天我就可以在机场看到它的“庐山真面目”,与它零距离接触了。想想这些我躺在床上激动地怎么也睡不着。
14日凌晨4:00多,我被妈妈从睡梦中叫醒了,和我们同行的刘丽阿姨和张世豪哥哥已经在楼下等待了。洗刷完毕,我们拿着行李,在华宝商场门口等待机场大巴,5:00钟大巴准时出发前往新郑机场。
早上高速路上的车很少,一路奔波,二个小时后我们就到达了新郑机场。妈妈拿着机票去服务台办理登机手续,办完手续后我们顺利地通过了安检,在登机口等待登机。从登机口的窗户向外望去,我们将要乘坐的飞机,就停在外面,银白色的机身上有几条蓝色的线条,上面写着中国南方航空几个大字,两只巨大的翅膀向两侧直直地伸出,像一只将要展翅高飞的雄鹰。没过多久,机场广播就提示我们该登机了。我走进机舱,坐在靠窗的位置上,我既兴奋又紧张。一会儿,飞机开始缓缓地向前行,慢慢地越来越快,我的心也随着飞机的快速划行、起飞,跳到嗓子眼里,紧张的大气都不敢出,耳朵也“嗡嗡”作响。突然,我觉得身体向上提,整个飞机呈45度角向上飞起,等我还没有弄清怎么回事,飞机已经带我们离开地面飞上了天空。我赶紧趴在窗口向外看,蔚蓝的天空一望无垠,不远处飘浮着几朵白云。再往下看,地面的美景尽收眼底,高大的楼房像一个个小豆腐块一样,飞机继续向上飞行,一会儿就冲出了云层,云白白的,有的像凶猛的狮子,有的像奔驰的骏马,有的像温顺的小狗,还有的像我们盖的棉被……飞机飞行两个多小时后,我从窗口向下望去,看到了久违的大连市。乘务员也在广播里告诉大家:飞机马上就要在大连机场降落了,请大家做好降落准备。我在心里默默的想:大连,我终于见到你了。
工作时间:8:00-18:00
电子邮件
675289112@qq.com