/com/lele/Manager/InteractManager.as

https://gitlab.com/Treeky-NULL/LezaiNiubi
ActionScript | 100 lines | 82 code | 13 blank | 5 comment | 2 complexity | 3099f02f7a1857fa4baa6ae14e149a47 MD5 | raw file
  1. package com.lele.Manager
  2. {
  3. import com.lele.Data.GloableData;
  4. import com.lele.Manager.Interface.IResourceLoader;
  5. import flash.display.Loader;
  6. import flash.display.MovieClip;
  7. import flash.events.MouseEvent;
  8. import com.lele.Manager.Interface.IReport;
  9. import flash.display.Sprite;
  10. import flash.events.Event;
  11. import com.lele.Container.ContainerBase;
  12. import flash.geom.Point;
  13. import flash.net.URLLoader;
  14. import flash.net.URLRequest;
  15. import flash.ui.Mouse;
  16. /**
  17. * ...
  18. * @author Lele
  19. */
  20. public class InteractManager extends Sprite implements IReport
  21. {
  22. private var _repoter:IReport;
  23. private var _container:ContainerBase;
  24. private var _clickStyle:Class;
  25. private var _interectResLoader:Loader;
  26. public function InteractManager(report:IReport,interactContainer:ContainerBase)
  27. {
  28. _repoter = report;
  29. _container = interactContainer;
  30. _interectResLoader = new Loader();
  31. }
  32. public function LoadRes(url:String)
  33. {
  34. var req:URLRequest = new URLRequest(url);
  35. _interectResLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnLoaded);
  36. _interectResLoader.load(req);
  37. }
  38. private function OnLoaded(evt:Event)
  39. {
  40. _interectResLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, OnLoaded);
  41. _clickStyle = _interectResLoader.contentLoaderInfo.applicationDomain.getDefinition("MouseClick") as Class;
  42. }
  43. public function OnReport(evt:Event):void
  44. {
  45. }
  46. //click effect
  47. public function OnMapClick(position:Point)
  48. {
  49. if (_clickStyle == null) { return; }
  50. var mc = new _clickStyle();
  51. (mc as MovieClip).x = position.x+GloableData.MapOffSetX;
  52. (mc as MovieClip).y = position.y+GloableData.MapOffSetY;
  53. (mc as MovieClip).addFrameScript(6, function()
  54. {
  55. (mc as MovieClip).stop();
  56. _container.removeChild(mc);
  57. });
  58. _container.addChild(mc);
  59. }
  60. public function MouseClickMode(style:Sprite, OnClick:Function)
  61. {
  62. var sjb:Sprite = new Sprite();//这个过来的sprite有病,会发癫
  63. sjb.addChild(style);
  64. var _OnClick:Function = function(evt:MouseEvent):void{
  65. OnClick(new Point(mouseX-GloableData.MapOffSetX,mouseY-GloableData.MapOffSetY));
  66. sjb.removeEventListener(MouseEvent.CLICK, _OnClick);
  67. }
  68. sjb.addEventListener(Event.ENTER_FRAME, MouseClickMode_everyFrame);
  69. sjb.addEventListener(MouseEvent.CLICK, MouseClickMode_onClick);
  70. sjb.addEventListener(MouseEvent.CLICK, _OnClick);
  71. _container.addChild(sjb);
  72. Mouse.hide();
  73. }
  74. private function MouseClickMode_onClick(evt:MouseEvent)
  75. {
  76. (evt.target as Sprite).removeEventListener(MouseEvent.CLICK, MouseClickMode_onClick);
  77. (evt.target as Sprite).removeEventListener(Event.ENTER_FRAME, MouseClickMode_everyFrame);
  78. (evt.target as Sprite).parent.removeChild((evt.target as Sprite));
  79. Mouse.show();
  80. }
  81. private function MouseClickMode_everyFrame(evt:Event)
  82. {
  83. (evt.target as Sprite).x = mouseX-(evt.target as Sprite).width/2;
  84. (evt.target as Sprite).y = mouseY-(evt.target as Sprite).height/2;
  85. }
  86. }
  87. }