设为首页收藏本站

老三届音画网

查看: 752|回复: 4

动画入门班第109期第二组《第十五课:脚本大本钟3》作业区

[复制链接]

106

主题

800

帖子

1069

积分

老师

Rank: 8Rank: 8

金币
5926
积分
1069
发表于 2020-5-11 21:40:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,获取更多资源

您需要 登录 才可以下载或查看,没有帐号?请用中文注册

x
本帖最后由 花无缺 于 2020-5-11 21:51 编辑

这里是动画入门班第109期第二组《第十五课:大本钟3》作业区:
请您一定看清组号与作业名称上传作业。点开下面的网址,查看上传作业方法: http://www.yalangelt.com/forum.php?mod=forumdisplay&fid=94

回复

使用道具 举报

0

主题

243

帖子

282

积分

初级学员

Rank: 1

金币
2035
积分
282
发表于 2020-5-15 21:22:34 | 显示全部楼层
本帖最后由 记不住 于 2020-5-15 21:34 编辑



回复

使用道具 举报

16

主题

792

帖子

982

积分

初级学员

Rank: 1

金币
4715
积分
982
发表于 2020-5-18 17:53:21 | 显示全部楼层
本帖最后由 巫荣云师 于 2020-5-31 15:30 编辑









回复

使用道具 举报

2

主题

478

帖子

609

积分

初级学员

Rank: 1

金币
2390
积分
609
发表于 2020-5-30 20:45:18 | 显示全部楼层
本帖最后由 刘树义 于 2020-5-30 20:46 编辑















package {
 import flash.display.Sprite;//加载外部类,用于影片剪辑
 import flash.events.Event;//加载外部类,用于侦听
 import flash.media.Sound;//加载外部类,用于声音
 import flash.media.SoundChannel;//加载外部类,用于声道
 import flash.events.TimerEvent;//加载外部类,用于时间侦听
 import flash.utils.Timer;//加载外部类,用于时间
 public class BigBen extends Sprite {//定义一个类
  var clockW:Number=600;//stage.stageWidth;//定义一个变量,存放场景的宽度
  var clockH:Number=600;//stage.stageHeight;//定义一个变量,存放场景的高度
  var clockR:Number=clockW>clockH?clockH:clockW;//定义一个变量,存放时钟半径
  var Scale:Number=clockR/400;//定义一个变量,存放缩放比例
  var myTimeate=new Date();//定义一个变量,存放时间日期
  var bells:int =0;//定义一个变量,做是否在敲钟的标记。也可以用布尔类型
  var numHours:int=0;//定义一个变量,存放当时为几点钟
  var sound:Sound =new BELL();//加载库中声音
  var sound1:Sound =new BEFORE();//加载库中声音
  var soundchannel:SoundChannel;//定义一个变量,用于声道
  var M:Number =0;//调用启动声音的时间
  
  public function BigBen(clockw , clockh , clockr) {//定义一个主函数
   this.clockW=clockw;
   this.clockH=clockh;
   this.clockR=clockr;
   ic()
   HMS();
  }
  
  private function Pic() {//调用库中钟面元件
   var picIC=new PIC();
   addChild(pic);//添加到场景中
   pic.x=clockW/2;//调整位置
   pic.y=clockH/2;
  }
  //---------------敲钟函数----------
  private function Bells() {
   var j:int =0;//定义一个变量,存放敲钟几次了
   myTime=new Date();//获取最新时间日期
   numHours=myTime.getHours()+1;//调整一下数据
   var numbells:int =numHours%12;//将24点计时转为12点计时
   if (numbells==0) {//0点敲钟12次
    numbells=12;
   }
   var timer:Timer=new Timer(3000,numbells);//定义敲钟时间间隔和次数
   timer.addEventListener(TimerEvent.TIMER,TimerOverEvent);//添加侦听函数
   timer.start();//计时开始
   function TimerOverEvent(e:TimerEvent) {//侦听函数
    j++;//敲钟一次加一个数
    if (j<=numbells) {
     soundchannel=sound.play();//没有到应敲钟次数继续敲钟
    }
    if (j==numbells) {
     bells=0;//超过了应敲钟次数,将bells标记置为不在敲钟
    }
   }
  }
  //-----------------敲钟前的声音函数----------
  private function before() {
   var timer:Timer=new Timer(19000,1);//构建一个时间间隔变量
   timer.addEventListener(TimerEvent.TIMER_COMPLETE,TimerOverEvent);//对timer添加一个侦听事件
   timer.start();//启动timer
   function TimerOverEvent(e:TimerEvent) {
    soundchannel=sound1.play();//播放敲钟前的声音
   }
  }
  public function HMS() {
   //----------添加时针--------
   //var hou:Sprite=new DRAW(3,120,7,3,1,0x000000,Scale);//新建一个影片剪辑,绘制时针
   // 半径  针长度  偏移量    左边的高度 右边的高度  指针颜色
   var hou:HOU=new HOU();
   addChild(hou);//将时针添加到场景中

   //----------添加分针--------
   //var min: Sprite = new DRAW(2,160,20,2,0.6,0x000000,Scale);//新建一个影片剪辑,绘制分针
   var min:MIN=new MIN();
   addChild(min);
   //----------添加钞针--------
   var sec: Sprite = new DRAW(5,130,35,0.5,0.5,0xff0000,Scale);///新建一个影片剪辑,绘制秒针
   addChild(sec);
   hou.x=min.x=sec.x=clockW/2;//调整时、分、钞针的位置
   hou.y=min.y=sec.y=clockH/2;
   //------为时、分、秒针添加侦听事件------
   sec.addEventListener(Event.ENTER_FRAME,showSec);
   min.addEventListener(Event.ENTER_FRAME,showMin);
   hou.addEventListener(Event.ENTER_FRAME,showHou);
  }
  private function showSec(e:Event) {
   myTime=new Date();
   e.target.rotation = myTime.getSeconds() * 6 + myTime.getMilliseconds() / 1000 * 6 - 90;
   if (Math.round(e.target.rotation)==-108 && bells==0 && -90>M && M>-95) {
    Bells();//调用Bells敲钟函数
    bells=1;//设置当前已在敲钟
   }
   if (Math.round(e.target.rotation)==60 && -90>M && M>-95) {
    before();//调用敲钟前的声音
   }
  }
  private function showMin(e:Event) {
   e.target.rotation = myTime.getMinutes() * 6 + myTime.getSeconds() / 10 -90 ;
   M=e.target.rotation;//获取当前分针的位置
  }
  private function showHou(e:Event) {
   e.target.rotation = myTime.getHours() * 30 + myTime.getMinutes() *5 / 10-90;
  }
 }
}


回复

使用道具 举报

1

主题

1438

帖子

1673

积分

初级学员

Rank: 1

金币
9416
积分
1673
发表于 2020-6-3 17:11:10 | 显示全部楼层


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 请用中文注册

本版积分规则

Powered by Discuz! X3.4



快速回复 返回顶部 返回列表