中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 图形图象 > 网页设计 > Flash
实用Flash应用程序—打字练习(4)
作者:未知 时间:2004-07-16 12:12 出处:Yesky 责编:chinaitpower
              摘要:实用Flash应用程序—打字练习(4)
5、场景中帧的划分

  把主场景划分为4段循环的帧结构。

  4.2.5.1.第一帧,用于初始化全局变量。

  fscommand ("fullscreen", "true");
  fscommand ("showmenu", "false");
  baseDepth = 1;
  testDepth = 10;
  menuDepth = 2;
  menux = 118;//菜单的横坐标
  menuy = 102;//菜单的纵坐标
  timeBarWidth = 76;//时间棒的总长度
  startTimer = false;
  typePause = false;
  nowTimer = getTimer();//计时一次
  showType = "menu"; //显示菜单
  menushowFram = true;// 显示背景
  backToFram = false;//是否返回到开始界面
  loadText = false;//是否开始倒入原文
  level = 1;//难度级别为1
  text1 = "";
  text2 = "";
  textLength = 0;
  loopNum = 0;

  back = false;
  again = false;
  timeOver = false;
  typeSound = new Sound();
  typeSound.attachSound("type");
  errorSound = new Sound();
  errorSound.attachSound("error");
  typeSoundPlay = true;time = 3;
  errorNum = 0;
  speedNum = 0;
  choose = new String("normalText");
  inputText = choose;
  attachMovie("fram", "fram", baseDepth);//显示开始界面的背景

  4.2.5.2  第二帧到第三帧;

  第2帧设一个标签“mainLoop":

  if(loadText==true)
    gotoAndPlay("loadNum");//跳到下载原文的循环中
  if (showFram == false)
  {
    fram.removeMovieClip();//把背景从屏幕上抹去
    removeMovieClip (showType);//把菜单从屏幕上抹去
    attachMovie("typeSpace", "typeSpace", testDepth);
    gotoAndPlay ("typeLoop");//跳到练习的场景中
  } else
  {
    attachMovie(showType, showType, menuDepth);//跳到另一个菜单中
  }
  _root[showType]._x = menux;//设置横坐标
  _root[showType]._y = menuy;//设置纵坐标第3帧的代码:
  gotoAndPlay("mainLoop");

  4.2.5.3第3个循环段:

  从第5帧到第6帧。

  第5帧标签“typeLoop";

  if (backToFram == true)
  {  //响应在typeSpace剪辑上的按钮BACK的事件返回到开始界面
    removeMovieClip ("typeSpace");
    gotoAndPlay (1);
  }
  if(again==true)//响应在typeSpace剪辑上的按钮AGAIN的事件
  {  //场景不变,重复上一次的练习
    removeMovieClip("showScores");
    text1.scroll=1;
    text2="";
    loopNum=0;
    again=false;
  }//以下的代码是用于练习过程中实时判断,检测我们分为几个小节进行分析。

  1.让原文文本向上卷动。

  if(Key.isDown(Key.PGDN))
  {  
    text1.scroll+=1;
  }
  if(Key.isDown(Key.PGUP)){
    text1.scroll-=1;
  }

  2.排除SHIFT键码错误。

  SHIFT用于大小写转换,但他也有自己的键码值。所以我们必须屏蔽掉SHIFT的返回值:

  if(Key.getCode() !=Key.SHIFT )
  {//屏蔽掉SHIFT的返回值后
    var tempText1=text1.charAt(Selection.getBeginIndex()-1);
    var tempText2=text2.charAt(Selection.getBeginIndex()-1);
    if(tempText1 !=tempText2 && textLength1!=text2.length)
    {
      if(Key.getCode() != Key.BACKSPACE)
      {
        errorSound.start(0,1);
      }
      textLength1=text2.length;
    }
    if(tempText1 ==tempText2 && textLength1!=text2.length)
    {
       textLength1=text2.length;
      if(typeSoundPlay==true)
      {
        typeSound.start(0,1);
      }
    }
  } // end of : if(Key.getCode() != Key.SHIFT)

  3.判断何时结束一次练习,并进行成绩统计

  if (tempTime-nowTimer>=(time*60000))
  {//时间结束
    timeOver=true;//事件结束标志符
    _root.typeSpace.scores =int( (text2.length*(1+ loopNum))/(time) );//显示成绩
    speedNum=_root.typeSpace.scores;if(back==false)
    {  //响应练习结束后没按下BACK按钮的事件
      attachMovie( "showScores","showScores",10+testDepth );
    }
    showScores._x=138;showScores._y=144;
    for(i=0;i<TEXT2.LENGTH;I++)< p>
    { //show the error Num
      if( text1.charAt(i) !=text2.charAt(i) )
      {
        errorNum++;//统计错误
      }
    }
    _root.typeSpace.error=errorNum;
    stop ();//时间到就让程序停止在此
    if(back==true)//响应练习结束后按下BACK按钮的事件
    {
      removeMovieClip("typeSpace");
      removeMovieClip("showScores");
      gotoAndPlay(1);
      back=false;
    }
  }// end of if (tempTime-nowTimer>=(time*600))

  4.让时间棒准确的显示剩余时长:

  _root.typeSpace.timeBar._width = (1-(tempTime- nowTimer)/(60000*time))*timeBarWidth;

  第6帧,标签“typeEnd" gotoAndPlay("typeLoop");

  4.2.5.4

  第4个循环段第8帧到第10帧.

  第8帧 标签“loadNum"

  text1="load...";
  ranFile=random(4);
  if(choose=="normalText")
  {  //导入文本的路径及其名称
    inputTextinputText= choose add "/" add level add random(4) add ".txt";
  }
  elseinputText=choose add "/" add random(4) add ".txt";loadVariablesNum(inputText,0);

  第9帧 标签“empty"

  第10帧 标签“loadNumEnd"

  if(text1=="load...")
  {
    gotoAndPlay("empty");
    trace("gotoAnd");
  }
  else
  {
    loadText=false;
    trace("load over");
    gotoAndPlay("mainLoop");
  }

  5.结束语

  到此程序分析完毕。全部代码总共也只有100行左右。发布成的可执行文件大小也不过30k左右。让人想到了在可爱的dos时代,一张软盘行遍天下的历史。Flash编程的特点就是要兼顾帧和层的概念,控制好帧的移动,就控制了程序的走向;掌握了“层”就是掌握了Flash动画技术的精髓。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有