PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/PMI/PMI.as

http://anjue.googlecode.com/
ActionScript | 969 lines | 770 code | 98 blank | 101 comment | 99 complexity | 03e18b81d5b4dabd132960a3519b0e20 MD5 | raw file
Possible License(s): Apache-2.0
  1. package {
  2. import fl.video.FLVPlayback;
  3. import fl.video.VideoAlign;
  4. import flash.display.MovieClip;
  5. import flash.display.Sprite;
  6. import flash.events.Event;
  7. import flash.events.IOErrorEvent;
  8. import flash.events.MouseEvent;
  9. import flash.geom.Rectangle;
  10. import flash.net.URLLoader;
  11. import flash.net.URLRequest;
  12. import flash.text.TextField;
  13. import flash.text.TextFormat;
  14. import flash.utils.Dictionary;
  15. import src.component.UIScrollBar;
  16. import src.event.EventAnj;
  17. import src.info.LessonInfo;
  18. import src.info.LetterInfo;
  19. import src.manager.FilterManager;
  20. import src.manager.SoundManager;
  21. /**
  22. * ?? PMI Tool
  23. * @author Anjue
  24. */
  25. [SWF(width="1024",height="768")]
  26. public class PMI extends Sprite
  27. {
  28. // [Embed(source="resource/font/Pinyinok.ttf",fontFamily="Regular")]
  29. // private var embeddedFont:String;
  30. private var URL:String = "";
  31. private var main:PMI_MainPanel;
  32. private var videoPlayer:FLVPlayback;
  33. private var now_type:uint = 0;
  34. /** ???? **/
  35. private var allSheng:Array = ["b","p","m","f","d","t","n","l","g","k","h","j","q","x","zh","ch","sh","r","z","c","s","y","w"];
  36. /** ???? **/
  37. private var allYun:Array = ["a","o","e","i","u","ü","ę","er","ai","ei","ao","ou","an","en","ang","eng","ong","ia","ie","iao","iu","ian","in","iang","ing","iong","ua","uo","uai","ui","uan","un","uang","ueng","üe","üan","ün"];
  38. /** ?????? ????????????? **/
  39. private var importantSheng:Array = [];
  40. /** ?????? ?????????????**/
  41. private var importantYun:Array = ["ang","eng","ong","ing"];
  42. /** ?????????? **/
  43. private var selectedImportant:String = "";
  44. private var ergeShowBool:Boolean = false;
  45. private var title:TextField;
  46. /** ????? **/
  47. private var _uiScorllBar:UIScrollBar;
  48. public function PMI()
  49. {
  50. init();
  51. }
  52. private function init():void
  53. {
  54. LessonInfo.ownEvent.addEventListener(Event.COMPLETE,lessonCom);
  55. LessonInfo.doLoad();
  56. }
  57. private function lessonCom(e:Event):void
  58. {
  59. URL = "resource/"+LessonInfo.lessonID+"/";
  60. importantSheng = LessonInfo.importantSheng;
  61. importantYun = LessonInfo.importantYun;
  62. LetterInfo.ownEvent.addEventListener(Event.COMPLETE,letterCom);
  63. LetterInfo.doLoad();
  64. }
  65. private function letterCom(e:Event):void
  66. {
  67. main = new PMI_MainPanel();
  68. main.myTitle.text = LessonInfo.title;
  69. setMyTextFormat(main.myTitle,"MYuenHK-Medium",32);
  70. this.addChild(main);
  71. initPMI(0);
  72. }
  73. private function initPMI($type:uint):void
  74. {
  75. now_type = $type;
  76. var i:uint = 0;
  77. for(i;i<4;i++)
  78. {
  79. if(i == now_type)
  80. {
  81. main["type_"+i].gotoAndStop(2);
  82. main["type_"+i].buttonMode = false;
  83. main["panel_"+i].visible = true;
  84. }else
  85. {
  86. main["type_"+i].gotoAndStop(1);
  87. main["type_"+i].buttonMode = true;
  88. main["panel_"+i].visible = false;
  89. }
  90. if(!main["type_"+i].hasEventListener(MouseEvent.CLICK))
  91. main["type_"+i].addEventListener(MouseEvent.CLICK,typeClick);
  92. }
  93. var list:Array = importantSheng.concat(importantYun);
  94. var str1:String;
  95. if(importantSheng.length>0 && importantYun.length>0)
  96. {
  97. str1 = "?????";
  98. }else if(importantSheng.length>0 && importantYun.length==0)
  99. {
  100. str1 = "??";
  101. }else if(importantSheng.length==0 && importantYun.length>0)
  102. {
  103. str1 = "??";
  104. }
  105. str1 = "????????" + str1;
  106. var str:String = "";
  107. i=0;
  108. for(i;i<list.length;i++)
  109. {
  110. if(i == list.length-1)
  111. str += list[i] + "?";
  112. else
  113. str += list[i] + "?";
  114. }
  115. main.title.embedFonts = true;
  116. main.title.htmlText = "<font color='#008F45' size='22' face='MYUenHK-Medium'>"+str1+"</font>"+"<font color='#008F45' size='24' face='PinYinok'>"+str+"</font>";
  117. initPanelFunction(now_type);
  118. }
  119. private function typeClick(e:MouseEvent):void
  120. {
  121. var target:MovieClip = e.currentTarget as MovieClip;
  122. var type:uint = target.name.split("_")[1];
  123. clearPanelListener(now_type);
  124. initPMI(type);
  125. }
  126. /**
  127. * ???????
  128. * @$type ???? 0.???? 1.??/?? 2.?? 3.??
  129. */
  130. private function initPanelFunction($type:uint):void
  131. {
  132. var panel:MovieClip = main["panel_"+now_type];
  133. var i:uint = 0;
  134. switch(now_type)
  135. {
  136. case 0:
  137. var video:MovieClip = panel.panel_duyin.video as MovieClip;
  138. if(!video.getChildByName("video_player"))
  139. {
  140. videoPlayer = new FLVPlayback();
  141. videoPlayer.name = "video_player";
  142. videoPlayer.registrationWidth = 310;
  143. videoPlayer.registrationHeight = 180;
  144. videoPlayer.align = VideoAlign.TOP_LEFT;
  145. video.addChild(videoPlayer);
  146. }
  147. panel.panel_duyin.tip.visible = false;
  148. panel.panel_duyin.btn_zhenren.gotoAndStop(1);
  149. panel.panel_duyin.btn_zhenren.addEventListener(MouseEvent.CLICK,zhenrenOrZuixing);
  150. panel.panel_duyin.btn_zuixing.gotoAndStop(1);
  151. panel.panel_duyin.btn_zuixing.addEventListener(MouseEvent.CLICK,zhenrenOrZuixing);
  152. i = 0;
  153. for(i;i<allSheng.length;i++)
  154. {
  155. if(!checkInList(allSheng[i],importantSheng))
  156. {
  157. panel["s_"+i].gotoAndStop(2);
  158. panel["s_"+i].alpha = 0.5;
  159. }else
  160. {
  161. panel["s_"+i].gotoAndStop(1);
  162. panel["s_"+i].addEventListener(MouseEvent.CLICK,shengOrYunClick);
  163. }
  164. }
  165. i = 0;
  166. trace(allYun.length)
  167. for(i;i<allYun.length;i++)
  168. {
  169. if(!checkInList(allYun[i],importantYun))
  170. {
  171. panel["y_"+i].gotoAndStop(2);
  172. panel["y_"+i].alpha = 0.5;
  173. }else
  174. {
  175. panel["y_"+i].gotoAndStop(1);
  176. panel["y_"+i].addEventListener(MouseEvent.CLICK,shengOrYunClick);
  177. }
  178. }
  179. i = 0;
  180. for(i;i<6;i++)
  181. {
  182. panel["tool_"+i].gotoAndStop(1);
  183. panel["tool_"+i].addEventListener(MouseEvent.CLICK,toolClick);
  184. }
  185. panel.panel_tool.show.show.gotoAndStop(1);
  186. panel.panel_tool.title.gotoAndStop(1);
  187. panel.panel_tool.visible = false;
  188. panel.panel_duyin.visible = true;
  189. initYunTips();
  190. break;
  191. case 1:
  192. var show:MovieClip = panel.show.show;
  193. show.y = 0;
  194. while(show.numChildren>0) show.removeChildAt(0);
  195. var list:Array = importantSheng.concat(importantYun);
  196. var str:String = "";
  197. if(importantSheng.length>0 && importantYun.length>0)
  198. {
  199. str = "?????";
  200. }else if(importantSheng.length>0 && importantYun.length==0)
  201. {
  202. str = "??";
  203. }else if(importantSheng.length==0 && importantYun.length>0)
  204. {
  205. str = "??";
  206. }
  207. i = 0;
  208. var letterStr:String = "";
  209. for(i;i<list.length;i++)
  210. {
  211. if(i == list.length-1)
  212. letterStr += list[i];
  213. else
  214. letterStr += list[i] + "?";
  215. var item:Item_Important = new Item_Important();
  216. item.name = list[i];
  217. item.status = "s";
  218. item.btn_s.gotoAndStop(2);
  219. item.btn_s.addEventListener(MouseEvent.CLICK,shiOrPinClick);
  220. item.btn_p.gotoAndStop(1);
  221. item.btn_p.addEventListener(MouseEvent.CLICK,shiOrPinClick);
  222. item.y += (144+40)*(i);
  223. item.letter.text = list[i];
  224. setMyTextFormat(item.letter,"PinYinok",58);
  225. show.addChild(item);
  226. var lword:Array = LessonInfo.getInfoByLevelID(list[i]).lessonWord;
  227. var j:uint = 0;
  228. for(j;j<3;j++)
  229. {
  230. item["lesson_"+j].gotoAndStop(1);
  231. var lett:String = lword[j];
  232. if(lett)
  233. {
  234. item["lesson_"+j].letter.mouseEnabled = false;
  235. item["lesson_"+j].word.mouseEnabled = false;
  236. item["lesson_"+j].addEventListener(MouseEvent.CLICK,wordClick);
  237. item["lesson_"+j].letter.text = LetterInfo.getInfoByLevelID(lett).pin;
  238. // setMyTextFormat(item["lesson_"+j].letter,"Regular",22);
  239. item["lesson_"+j].word.text = LetterInfo.getInfoByLevelID(lett).example;
  240. }else
  241. {
  242. item["lesson_"+j].visible = false;
  243. }
  244. }
  245. var oword:Array = LessonInfo.getInfoByLevelID(list[i]).otherWord;
  246. j=0
  247. for(j;j<3;j++)
  248. {
  249. item["other_"+j].gotoAndStop(1);
  250. var let:String = oword[j];
  251. if(let)
  252. {
  253. item["other_"+j].addEventListener(MouseEvent.CLICK,wordClick);
  254. item["other_"+j].letter.mouseEnabled = false;
  255. item["other_"+j].word.mouseEnabled = false;
  256. item["other_"+j].letter.text = LetterInfo.getInfoByLevelID(let).pin;
  257. // setMyTextFormat(item["other_"+j].letter,"Regular",22);
  258. item["other_"+j].word.text = LetterInfo.getInfoByLevelID(let).example;
  259. }else
  260. {
  261. item["other_"+j].visible = false;
  262. }
  263. }
  264. }
  265. panel.title.htmlText = "<font color='#000000' size='24' face='MYUenHK-Medium'>"+str+"</font>"+"<font color='#000000' size='36' face='PinYinok'>"+letterStr+"</font>";
  266. _uiScorllBar = createScrollBar(panel);
  267. break;
  268. case 2:
  269. panel.show.show.gotoAndStop(1);
  270. ergeShowBool = false;
  271. var l:URLLoader = new URLLoader();
  272. l.addEventListener(Event.COMPLETE,loadErgeCom);
  273. l.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t3_1.txt"));
  274. panel.txt.text = LessonInfo.ergeName;
  275. panel.btn_important.addEventListener(MouseEvent.CLICK,showImportant);
  276. panel.btn_play.addEventListener(MouseEvent.CLICK,playErge);
  277. panel.btn_stop.addEventListener(MouseEvent.CLICK,stopErge);
  278. panel.voice.bar.buttonMode = true;
  279. panel.voice.bar.addEventListener(MouseEvent.MOUSE_DOWN,voiceDown);
  280. stage.addEventListener(MouseEvent.MOUSE_UP,voiceUp);
  281. break;
  282. case 3:
  283. panel.show.show.gotoAndStop(1);
  284. panel.btn_lianxi.gotoAndStop(2);
  285. panel.btn_daan.gotoAndStop(1);
  286. panel.btn_lianxi.addEventListener(MouseEvent.CLICK,showLianxi);
  287. panel.btn_daan.addEventListener(MouseEvent.CLICK,showDaan);
  288. var lo:URLLoader = new URLLoader();
  289. lo.addEventListener(Event.COMPLETE,loadLianxiCom);
  290. lo.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t4_1.txt"));
  291. var la:URLLoader = new URLLoader();
  292. la.addEventListener(Event.COMPLETE,loadDaanCom);
  293. la.addEventListener(IOErrorEvent.IO_ERROR,loadDaanErr);
  294. la.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t4_2.txt"));
  295. break;
  296. }
  297. }
  298. private function loadDaanCom(e:Event):void
  299. {
  300. var l:URLLoader = e.currentTarget as URLLoader;
  301. l.removeEventListener(Event.COMPLETE,loadToolInfoCom);
  302. }
  303. private function loadDaanErr(e:IOErrorEvent):void
  304. {
  305. var panel:MovieClip = main["panel_"+now_type];
  306. var l:URLLoader = e.currentTarget as URLLoader;
  307. l.removeEventListener(Event.COMPLETE,loadToolInfoCom);
  308. var btn:MovieClip = panel.btn_daan as MovieClip;
  309. btn.mouseChildren = false;
  310. btn.mouseEnabled = false;
  311. btn.filters = [FilterManager.getGrayFilter()];
  312. btn.removeEventListener(MouseEvent.CLICK,showDaan);
  313. }
  314. private function checkInList(param:String,arr:Array):Boolean
  315. {
  316. var b:Boolean = false;
  317. var i:uint = 0;
  318. for(i;i<arr.length;i++)
  319. {
  320. if(param == arr[i])
  321. b = true;
  322. }
  323. return b;
  324. }
  325. private function toolClick(e:MouseEvent):void
  326. {
  327. var panel:MovieClip = main["panel_"+now_type];
  328. panel.panel_duyin.visible = false;
  329. panel.panel_tool.visible = true;
  330. var target:MovieClip = e.currentTarget as MovieClip;
  331. target.gotoAndStop(2);
  332. // panel.panel_tool.show.show.gotoAndStop(target.name);
  333. panel.panel_tool.title.gotoAndStop(target.name);
  334. videoPlayer.stop();
  335. videoPlayer.closeVideoPlayer(1);
  336. var l:URLLoader = new URLLoader();
  337. l.addEventListener(Event.COMPLETE,loadToolInfoCom);
  338. l.load(new URLRequest(URL+target.name+".txt"));
  339. var i:uint = 0;
  340. for(i;i<6;i++)
  341. {
  342. if(i != target.name.split("_")[1])
  343. {
  344. panel["tool_"+i].gotoAndStop(1);
  345. }
  346. }
  347. i = 0;
  348. for(i;i<allSheng.length;i++)
  349. {
  350. if(!checkInList(allSheng[i],importantSheng))
  351. {
  352. panel["s_"+i].gotoAndStop(2);
  353. panel["s_"+i].alpha = 0.5;
  354. }else
  355. {
  356. panel["s_"+i].gotoAndStop(1);
  357. }
  358. }
  359. i = 0;
  360. for(i;i<allYun.length;i++)
  361. {
  362. if(!checkInList(allYun[i],importantYun))
  363. {
  364. panel["y_"+i].gotoAndStop(2);
  365. panel["y_"+i].alpha = 0.5;
  366. }else
  367. {
  368. panel["y_"+i].gotoAndStop(1);
  369. }
  370. }
  371. }
  372. private function loadToolInfoCom(e:Event):void
  373. {
  374. var panel:MovieClip = main["panel_"+now_type];
  375. var l:URLLoader = e.currentTarget as URLLoader;
  376. l.removeEventListener(Event.COMPLETE,loadToolInfoCom);
  377. var data:Object = l.data;
  378. var str:String = data.toString();
  379. panel.panel_tool.show.show.txt.htmlText = str;
  380. panel.panel_tool.show.show.txt.embedFonts = true;
  381. trace("length of txt:"+panel.panel_tool.show.show.txt.height);
  382. _uiScorllBar = createScrollBar(panel.panel_tool);
  383. }
  384. /**
  385. * ??????
  386. * @param $type
  387. */
  388. private function clearPanelListener($type:uint):void
  389. {
  390. var panel:MovieClip = main["panel_"+$type];
  391. switch($type)
  392. {
  393. case 0:
  394. videoPlayer.stop();
  395. videoPlayer.closeVideoPlayer(1);
  396. if(_uiScorllBar)
  397. {
  398. _uiScorllBar.removeEventListener(MouseEvent.MOUSE_MOVE,scrollMove);
  399. _uiScorllBar.destroy();
  400. _uiScorllBar = null;
  401. }
  402. var i:uint = 0;
  403. for(i;i<allSheng.length;i++)
  404. {
  405. if(checkInList(allSheng[i],importantSheng))
  406. {
  407. panel["s_"+i].removeEventListener(MouseEvent.CLICK,shengOrYunClick);
  408. }
  409. }
  410. i = 0;
  411. for(i;i<allYun.length;i++)
  412. {
  413. if(checkInList(allYun[i],importantYun))
  414. {
  415. panel["y_"+i].removeEventListener(MouseEvent.CLICK,shengOrYunClick);
  416. }
  417. }
  418. break;
  419. case 1:
  420. break;
  421. case 2:
  422. panel.btn_important.removeEventListener(MouseEvent.CLICK,showImportant);
  423. panel.voice.bar.removeEventListener(MouseEvent.MOUSE_DOWN,voiceDown);
  424. stage.removeEventListener(MouseEvent.MOUSE_UP,voiceUp);
  425. stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
  426. break;
  427. case 3:
  428. break;
  429. }
  430. SoundManager.destroy();
  431. if(_uiScorllBar)
  432. {
  433. _uiScorllBar.removeEventListener(MouseEvent.MOUSE_MOVE,scrollMove);
  434. _uiScorllBar.destroy();
  435. _uiScorllBar = null;
  436. }
  437. }
  438. private function zhenrenOrZuixing(e:MouseEvent):void
  439. {
  440. var panel:MovieClip = main["panel_"+now_type];
  441. var target:MovieClip = e.currentTarget as MovieClip;
  442. if(target.name == "btn_zhenren")
  443. {
  444. // panel.panel_duyin.btn_zhenren.gotoAndStop(2);
  445. // panel.panel_duyin.btn_zuixing.gotoAndStop(1);
  446. if(selectedImportant != "")
  447. {
  448. videoPlayer.load(URL+selectedImportant+"_zr.flv");
  449. videoPlayer.play();
  450. }
  451. }else if(target.name == "btn_zuixing")
  452. {
  453. // panel.panel_duyin.btn_zuixing.gotoAndStop(2);
  454. // panel.panel_duyin.btn_zhenren.gotoAndStop(1);
  455. if(selectedImportant != "")
  456. {
  457. videoPlayer.load(URL+selectedImportant+"_zx.flv");
  458. videoPlayer.play();
  459. }
  460. }
  461. }
  462. /**
  463. * ??????
  464. * @param e
  465. */
  466. private function showLianxi(e:MouseEvent):void
  467. {
  468. var panel:MovieClip = main["panel_"+now_type];
  469. panel.btn_lianxi.gotoAndStop(2);
  470. panel.btn_daan.gotoAndStop(1);
  471. panel.show.show.y = 0;
  472. // var l:Loader = new Loader();
  473. // l.contentLoaderInfo.addEventListener(Event.COMPLETE,loadLianxiCom);
  474. // l.load(new URLRequest(URL+"PMI_t4_1.swf"));
  475. var l:URLLoader = new URLLoader();
  476. l.addEventListener(Event.COMPLETE,loadLianxiCom);
  477. l.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t4_1.txt"));
  478. }
  479. private function showDaan(e:MouseEvent):void
  480. {
  481. var panel:MovieClip = main["panel_"+now_type];
  482. panel.btn_lianxi.gotoAndStop(1);
  483. panel.btn_daan.gotoAndStop(2);
  484. panel.show.show.y = 0;
  485. // var l:Loader = new Loader();
  486. // l.contentLoaderInfo.addEventListener(Event.COMPLETE,loadLianxiCom);
  487. // l.load(new URLRequest(URL+"PMI_t4_2.swf"));
  488. var l:URLLoader = new URLLoader();
  489. l.addEventListener(Event.COMPLETE,loadLianxiCom);
  490. l.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t4_2.txt"));
  491. }
  492. private function loadLianxiCom(e:Event):void
  493. {
  494. // var panel:MovieClip = main["panel_"+now_type];
  495. // var show:MovieClip = panel.show.show as MovieClip;
  496. // while(show.numChildren>0) show.removeChildAt(0);
  497. // show.addChild(e.currentTarget.loader);
  498. // _uiScorllBar = createScrollBar(panel);
  499. var panel:MovieClip = main["panel_"+now_type];
  500. var l:URLLoader = e.currentTarget as URLLoader;
  501. l.removeEventListener(Event.COMPLETE,loadToolInfoCom);
  502. var data:Object = l.data;
  503. var str:String = data.toString();
  504. panel.show.show.txt.htmlText = str;
  505. panel.show.show.txt.embedFonts = true;
  506. // setMyTextFormat(panel.show.show.txt,"MYuenHK-Medium");
  507. trace("txtHeight of txt:"+panel.show.show.txt.textHeight)
  508. trace("numLines of txt:"+panel.show.show.txt.numLines)
  509. trace("length of txt:"+panel.show.show.txt.height)
  510. _uiScorllBar = createScrollBar(panel);
  511. }
  512. private function voiceDown(e:MouseEvent):void
  513. {
  514. var panel:MovieClip = main["panel_"+now_type];
  515. var target:MovieClip = e.currentTarget as MovieClip;
  516. var rec:Rectangle = new Rectangle(0,0,panel.voice.bg.width,0);
  517. target.startDrag(true,rec);
  518. stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
  519. }
  520. private function mouseMove(e:MouseEvent):void
  521. {
  522. var panel:MovieClip = main["panel_"+now_type];
  523. var volume:Number = panel.voice.bar.x/panel.voice.bg.width;
  524. SoundManager.volume = volume;
  525. trace("volume change:"+volume);
  526. }
  527. private function voiceUp(e:MouseEvent):void
  528. {
  529. stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
  530. var panel:MovieClip = main["panel_"+now_type];
  531. panel.voice.bar.stopDrag();
  532. }
  533. /**
  534. * ??????????
  535. * @param e
  536. */
  537. private function loadErgeCom(e:Event):void
  538. {
  539. var panel:MovieClip = main["panel_"+now_type];
  540. var l:URLLoader = e.currentTarget as URLLoader;
  541. l.removeEventListener(Event.COMPLETE,loadToolInfoCom);
  542. var data:Object = l.data;
  543. var str:String = data.toString();
  544. panel.show.show.txt.htmlText = str;
  545. panel.show.show.txt.embedFonts = true;
  546. // var show:MovieClip = panel.show.show as MovieClip;
  547. // while(show.numChildren>0) show.removeChildAt(0);
  548. // show.addChild(e.currentTarget.loader);
  549. _uiScorllBar = createScrollBar(panel);
  550. }
  551. /**
  552. * ????
  553. * @param e
  554. */
  555. private function playErge(e:MouseEvent):void
  556. {
  557. var panel:MovieClip = main["panel_"+now_type];
  558. var volume:Number = panel.voice.bar.x/panel.voice.bg.width;
  559. SoundManager.play(URL+LessonInfo.lessonID+"_PMI_t3.mp3");
  560. SoundManager.volume = volume;
  561. }
  562. /**
  563. * ??????
  564. * @param e
  565. */
  566. private function stopErge(e:MouseEvent):void
  567. {
  568. SoundManager.stop();
  569. }
  570. /**
  571. * ??????
  572. * @param e
  573. */
  574. private function showImportant(e:MouseEvent):void
  575. {
  576. var panel:MovieClip = main["panel_"+now_type];
  577. var show:MovieClip = panel.show.show as MovieClip;
  578. var l:URLLoader = new URLLoader();
  579. l.addEventListener(Event.COMPLETE,loadErgeCom);
  580. if(ergeShowBool)
  581. {
  582. l.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t3_1.txt"));
  583. }else
  584. {
  585. l.load(new URLRequest(URL+LessonInfo.lessonID+"_PMI_t3_2.txt"));
  586. }
  587. ergeShowBool = !ergeShowBool;
  588. }
  589. /**
  590. * ???????
  591. * @param e
  592. */
  593. private var checkHash:Dictionary;
  594. private function shiOrPinClick(e:MouseEvent):void
  595. {
  596. var target:MovieClip = e.currentTarget as MovieClip;
  597. if(target.currentFrame == 1)
  598. {
  599. var p:MovieClip = target.parent as MovieClip;
  600. p.status = target.name.split("_")[1];
  601. target.gotoAndStop(2);
  602. if(p.status == "s")
  603. {
  604. p["btn_p"].gotoAndStop(1);
  605. }else
  606. {
  607. p["btn_s"].gotoAndStop(1);
  608. }
  609. checkHash = new Dictionary();
  610. checkPinduExist(p.name,p.status);
  611. }
  612. }
  613. private function checkPinduExist($name:String,status:String):void
  614. {
  615. var panel:MovieClip = main["panel_"+now_type];
  616. var show:MovieClip = panel.show.show;
  617. var itemShow:Item_Important = show.getChildByName($name) as Item_Important;
  618. if(itemShow)
  619. {
  620. if(!SoundManager.ownEvent.hasEventListener(Event.COMPLETE))
  621. SoundManager.ownEvent.addEventListener(Event.COMPLETE,checkCom);
  622. var lword:Array = LessonInfo.getInfoByLevelID($name).lessonWord;
  623. var j:uint = 0;
  624. for(j;j<3;j++)
  625. {
  626. var lett:String = lword[j];
  627. if(lett)
  628. {
  629. var target:MovieClip = itemShow["lesson_"+j];
  630. var obj:Object = LetterInfo.getInfoByLevelID(lett);
  631. var _url:String;
  632. if(obj.checkID == "")
  633. _url = URL+lett+"_"+status+".mp3";
  634. else
  635. _url = URL+obj.checkID+"_"+status+".mp3";
  636. checkHash[_url] = target;
  637. SoundManager.checkMp3Exist(_url);
  638. }
  639. }
  640. var oword:Array = LessonInfo.getInfoByLevelID($name).otherWord;
  641. j=0
  642. for(j;j<3;j++)
  643. {
  644. var let:String = oword[j];
  645. if(let)
  646. {
  647. var target1:MovieClip = itemShow["other_"+j];
  648. var obj1:Object = LetterInfo.getInfoByLevelID(let);
  649. var _url1:String;
  650. if(obj1.checkID == "")
  651. _url1 = URL+let+"_"+status+".mp3";
  652. else
  653. _url1 = URL+obj1.checkID+"_"+status+".mp3";
  654. checkHash[_url1] = target1;
  655. SoundManager.checkMp3Exist(_url1);
  656. }
  657. }
  658. }
  659. }
  660. private function checkCom(e:EventAnj):void
  661. {
  662. var data:Object = e.data;
  663. var flag:uint = data.flag;
  664. var url:String = data.url;
  665. var target:MovieClip = checkHash[url] as MovieClip;
  666. delete checkHash[url];
  667. if(target)
  668. {
  669. if(flag == 0)
  670. {
  671. target.mouseChildren = false;
  672. target.mouseEnabled = false;
  673. target.filters = [FilterManager.getGrayFilter()];
  674. }else
  675. {
  676. target.mouseChildren = true;
  677. target.mouseEnabled = true;
  678. target.filters = [];
  679. }
  680. }
  681. }
  682. /**
  683. * ????
  684. * @param e
  685. */
  686. private function wordClick(e:MouseEvent):void
  687. {
  688. var target:MovieClip = e.currentTarget as MovieClip;
  689. var index:uint = target.name.split("_")[1];
  690. var word:Array;
  691. var pin:String;
  692. if(target.name.split("_")[0] == "lesson")
  693. {
  694. word = LessonInfo.getInfoByLevelID(target.parent.name).lessonWord;
  695. }else
  696. {
  697. word = LessonInfo.getInfoByLevelID(target.parent.name).otherWord;
  698. }
  699. pin = word[index];
  700. var p:MovieClip = target.parent as MovieClip;
  701. var status:String = p.status;
  702. var obj:Object = LetterInfo.getInfoByLevelID(pin);
  703. var _url:String;
  704. if(obj.checkID == "")
  705. _url = URL+pin+"_"+status+".mp3";
  706. else
  707. _url = URL+obj.checkID+"_"+status+".mp3";
  708. trace("start play sound:" + _url);
  709. SoundManager.play(_url);
  710. }
  711. /**
  712. * ?????????
  713. * @param e
  714. */
  715. private function shengOrYunClick(e:MouseEvent):void
  716. {
  717. var panel:MovieClip = main["panel_"+now_type];
  718. var target:MovieClip = e.currentTarget as MovieClip;
  719. var index:uint = target.name.split("_")[1];
  720. panel.panel_duyin.visible = true;
  721. panel.panel_tool.visible = false;
  722. var oldIndex:uint;
  723. if(allSheng.indexOf(selectedImportant) != -1)
  724. {
  725. oldIndex = allSheng.indexOf(selectedImportant);
  726. panel["s_"+oldIndex].gotoAndStop(1);
  727. }else if(allYun.indexOf(selectedImportant) != -1)
  728. {
  729. oldIndex = allYun.indexOf(selectedImportant);
  730. panel["y_"+oldIndex].gotoAndStop(1);
  731. }
  732. if(target.name.split("_")[0] == "s")
  733. {
  734. selectedImportant = allSheng[index];
  735. panel.panel_duyin.tip.visible = true;
  736. panel.panel_duyin.tip.gotoAndStop(1);
  737. }else
  738. {
  739. selectedImportant = allYun[index];
  740. panel.panel_duyin.tip.visible = true;
  741. panel.panel_duyin.tip.gotoAndStop(2);
  742. }
  743. // if(panel.panel_duyin.btn_zhenren.currentFrame == 2 && target.currentFrame == 1)
  744. // {
  745. // videoPlayer.load(URL+selectedImportant+"_zr.flv");
  746. // videoPlayer.play();
  747. // trace("play video:" + URL+selectedImportant+"_zr.flv")
  748. // }else if(panel.panel_duyin.btn_zuixing.currentFrame == 2 && target.currentFrame == 1)
  749. // {
  750. // videoPlayer.load(URL+selectedImportant+"_zx.flv");
  751. // videoPlayer.play();
  752. // trace("play video:" + URL+selectedImportant+"_zx.flv")
  753. // }
  754. initYunTips();
  755. if(target.currentFrame != 2)
  756. {
  757. if(allSheng.indexOf(selectedImportant) != -1)
  758. {
  759. panel["s_"+allSheng.indexOf(selectedImportant)].gotoAndStop(1);
  760. }else if(allYun.indexOf(selectedImportant) != -1)
  761. {
  762. panel["y_"+allYun.indexOf(selectedImportant)].gotoAndStop(1);
  763. }
  764. target.gotoAndStop(2);
  765. }
  766. var i:uint = 0;
  767. for(i;i<6;i++)
  768. {
  769. panel["tool_"+i].gotoAndStop(1);
  770. }
  771. }
  772. /**
  773. * ???????????
  774. */
  775. private function initYunTips():void
  776. {
  777. var panel:MovieClip = main["panel_"+now_type];
  778. panel.panel_duyin.spell.text = selectedImportant;
  779. setMyTextFormat(panel.panel_duyin.spell,"PinYinok",58);
  780. panel.panel_duyin.show.show.txt.text = "";
  781. panel.panel_duyin.show.show.gotoAndStop(1);
  782. if(selectedImportant == "") return;
  783. var l:URLLoader = new URLLoader();
  784. l.addEventListener(Event.COMPLETE,loadLatterInfoCom);
  785. var url:String = URL+String(LessonInfo.lessonID.split(".")[0])+"_"+selectedImportant+".txt";
  786. l.load(new URLRequest(url));
  787. }
  788. /**
  789. * ??????????
  790. * @param e
  791. */
  792. private function loadLatterInfoCom(e:Event):void
  793. {
  794. var panel:MovieClip = main["panel_"+now_type];
  795. var l:URLLoader = e.currentTarget as URLLoader;
  796. l.removeEventListener(Event.COMPLETE,loadLatterInfoCom);
  797. var data:Object = l.data;
  798. var str:String = data.toString();
  799. panel.panel_duyin.show.show.txt.htmlText = str;
  800. panel.panel_duyin.show.show.txt.embedFonts = true;
  801. _uiScorllBar = createScrollBar(panel.panel_duyin);
  802. }
  803. /**
  804. * ?????
  805. * @param panel
  806. * @return
  807. */
  808. private function createScrollBar(panel:MovieClip):UIScrollBar
  809. {
  810. if(_uiScorllBar)
  811. {
  812. _uiScorllBar.removeEventListener(MouseEvent.MOUSE_MOVE,scrollMove);
  813. _uiScorllBar.destroy();
  814. _uiScorllBar = null;
  815. }
  816. panel.show.show.y = 0;
  817. var maxLenght:Number = panel.show.mask.height;
  818. var txt:TextField = panel.show.show.getChildByName("txt");
  819. if(txt)
  820. {
  821. txt.height = txt.textHeight + 5;
  822. }
  823. var totalLenght:Number = panel.show.show.height;
  824. if(totalLenght<maxLenght)
  825. {
  826. panel.scrollBar.barBall.visible = false;
  827. panel.scrollBar.barBg.visible = false;
  828. panel.scrollBar.upBtn.visible = false;
  829. panel.scrollBar.downBtn.visible = false;
  830. }else
  831. {
  832. panel.scrollBar.barBall.visible = true;
  833. panel.scrollBar.barBg.visible = true;
  834. panel.scrollBar.upBtn.visible = true;
  835. panel.scrollBar.downBtn.visible = true;
  836. }
  837. var bar:UIScrollBar = new UIScrollBar(panel.scrollBar.barBall,panel.scrollBar.barBg,maxLenght,panel.scrollBar.upBtn,panel.scrollBar.downBtn);
  838. bar.wheelObject = panel.show;
  839. bar.addEventListener(MouseEvent.MOUSE_MOVE,scrollMove);
  840. bar.totalLength = totalLenght + 15;
  841. return bar;
  842. }
  843. private function setMyTextFormat(txt:TextField,_font:String,_size:Object=24):void
  844. {
  845. var txtFormat:TextFormat = new TextFormat();
  846. txtFormat.font = _font; //????
  847. txtFormat.size = _size; //????
  848. txtFormat.bold = true; //???
  849. txt.embedFonts = true;
  850. txt.setTextFormat(txtFormat);
  851. }
  852. /**
  853. * ?????
  854. * @param e
  855. */
  856. private function scrollMove(e:Event):void
  857. {
  858. var index:int = _uiScorllBar.index;
  859. trace(index);
  860. var panel:MovieClip = main["panel_"+now_type];
  861. if(now_type == 0)
  862. {
  863. if(panel.panel_duyin.visible)
  864. panel = panel.panel_duyin;
  865. else
  866. panel = panel.panel_tool;
  867. }
  868. panel.show.show.y = -index;
  869. }
  870. }
  871. }