Jump to content
Search Community

cljclj520

Members
  • Posts

    8
  • Joined

  • Last visited

cljclj520's Achievements

0

Reputation

  1. ~_~ I'll take your advice to update greensock to a newer version. Thanks for your help all the way.
  2. I'm sorry,but I can publish the fla I've uploaded. The flash cs version is 5.5. Can you display the errors when published?
  3. I make a fla which is reduced. http://ge.tt/3TQd63K1/v/0
  4. This forum does not allow me to upload a zip or rar file How can I just provide a fla that can be published directly even when it must include greensock.swc.And also I have some classes that must be included.
  5. package { import com.greensock.TweenLite; import createRole.*; import flash.display.Bitmap; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.events.TextEvent; import flash.filters.GlowFilter; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.utils.ByteArray; /** * 角色创建视图类 * @param data * */ public class RoleCreateView extends Sprite { private var _data:Object; private var _nickLoader:URLLoader; private var _titleBg:Bitmap; private var _logo:Bitmap; private var _bg:Bitmap; private var _btns:Array; private var _currentBtn:RoleSelectBtn; private var _nick:String; private var _filterUtils:WordFilter; private var _isDispose:Boolean; private var _xingArr:Array; private var _ming1Arr:Array; private var _ming2Arr:Array; private var _inviteImg:Bitmap; private var _nameTfbg:Bitmap; private var _nameField:TextField; private var _nameTip:TextField; private var _suiji:Sprite; private var _createBtn:MovieClip; public static const DEFAULT_FONT:String = "宋体,SimSun"; /** * 是否是随机名称 */ private var _isRndName:Boolean; /** * 随机概率,对应武圣、飞羽、天师的随机概率 */ private static const RND_PERCENTS:Array = [2, 2, 1, 1, 2, 2]; /** * 构造方法 * @param data * */ public function RoleCreateView(data:Object) { _data = data; // 初始化界面,界面元素来源于独立的角色创建swc initView(); // 添加事件监听 initEvent(); } /** * 外部启动接口 * @param createRole * @param socketBack * */ public function initFunc(createRole:Function = null, socketBack:Function = null):void { _data["createRole"] = createRole; _data["callback"] = socketBack; } /** * 外部设置错误提示 * */ public function setErrorText(text:String) : void { if (_nameTip != null) { _nameTip.htmlText = text; } } override public function get width() : Number { return _bg ? _bg.width : 0; } override public function get height() : Number { return _createBtn ? _createBtn.y + _createBtn.height + 80: 0; } /** * 初始化界面 * */ private function initView():void { // 加载文字过滤器 _filterUtils = new WordFilter(); _filterUtils.setup(_data["filterWord"] as Array); // 加载随机姓名源文件 _nickLoader = new URLLoader(); _nickLoader.dataFormat = URLLoaderDataFormat.BINARY; _nickLoader.addEventListener(Event.COMPLETE,nickLoadComplete); _nickLoader.addEventListener(IOErrorEvent.IO_ERROR,nickIoerrorHandler); var isDebug:Boolean = _data["isDebug"]; var curVersion:Number = !isDebug ? ((_data["versionData"].update)[0]..version[0].@value) : Math.random(); _nickLoader.load(new URLRequest(_data["site"] + "client/name.swf?" + curVersion)); // 添加背景 _bg = new Bitmap(new createBg()); _bg.y = 17; addChild(_bg); // 添加标题背景 _titleBg = new Bitmap(new titleBg()); _titleBg.x = (_bg.width - _titleBg.width) / 2; _titleBg.y = _bg.y - 70; addChild(_titleBg); // 添加logo _logo = new Bitmap(new logo()); _logo.x = (_bg.width - _logo.width) / 2; _logo.y = _titleBg.y + (_titleBg.height - _logo.height) / 2; addChild(_logo); // 生成角色按钮,并监听鼠标事件 _btns = []; var characterBtn1:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character1()), 0, 1); characterBtn1.rawX = 61; characterBtn1.rawY = 200; addChild(characterBtn1); _btns.push(characterBtn1); var characterBtn2:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character2()), 0, 2); characterBtn2.rawX = 123; characterBtn2.rawY = 126; _btns.push(characterBtn2); var career1Img:Bitmap = new Bitmap(new career1()); career1Img.x = 153; career1Img.y = 220; addChild(career1Img); var characterBtn3:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character3()), 1, 1); characterBtn3.rawX = 240; characterBtn3.rawY = 42; _btns.push(characterBtn3); var characterBtn4:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character4()), 1, 2); characterBtn4.rawX = 338; characterBtn4.rawY = 43; _btns.push(characterBtn4); var career2Img:Bitmap = new Bitmap(new career2()); career2Img.x = 293; career2Img.y = 127; addChild(career2Img); var characterBtn5:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character5()), 2, 1); characterBtn5.rawX = 453; characterBtn5.rawY = 125; _btns.push(characterBtn5); var characterBtn6:RoleSelectBtn = new RoleSelectBtn(new Bitmap(new character6()), 2, 2); characterBtn6.rawX = 513; characterBtn6.rawY = 202; _btns.push(characterBtn6); var career3Img:Bitmap = new Bitmap(new career3()); career3Img.x = 420; career3Img.y = 220; addChild(career3Img); for each (var btn:RoleSelectBtn in _btns) { btn.addEventListener(MouseEvent.CLICK, btnClickHandler); btn.addEventListener(MouseEvent.ROLL_OVER, btnRollOverHandler); btn.addEventListener(MouseEvent.ROLL_OUT, btnRollOutHandler); addChild(btn); } //先随机选中一个,在名字加载完之后再显示随机名字 var totalPercent:int = 0; var i:int = 0; for (i = 0; i < RND_PERCENTS.length; i++) { totalPercent += RND_PERCENTS; } var rndPercent:int = int(Math.random() * totalPercent); totalPercent = 0; for (i = 0; i < RND_PERCENTS.length; i++) { totalPercent += RND_PERCENTS; if (rndPercent < totalPercent) break; } i = Math.min(i, _btns.length); var suijiBtn:RoleSelectBtn = _btns; setSelected(suijiBtn); // 创角提示 _inviteImg = new Bitmap(new inviteTip()); _inviteImg.x = _bg.x + (_bg.width - _inviteImg.width) / 2; _inviteImg.y = 315; addChild(_inviteImg); // 加入姓名输入框背景 _nameTfbg = new Bitmap(new nameBg()); _nameTfbg.x = _bg.x + (_bg.width - _nameTfbg.width) / 2; _nameTfbg.y = 360; addChild(_nameTfbg); // 加入随机按钮 _suiji = new Sprite(); _suiji.buttonMode = true; _suiji.addChild(new Bitmap(new randomBtn())); _suiji.x = _nameTfbg.x + _nameTfbg.width - _suiji.width - 6; _suiji.y = _nameTfbg.y + (_nameTfbg.height - _suiji.height) / 2; // 加入姓名输入框 _nameField = new TextField(); _nameField.type = TextFieldType.INPUT; _nameField.x = _nameTfbg.x + 10; _nameField.y = _nameTfbg.y + (_nameTfbg.height - 20) / 2;; _nameField.width = _suiji.x - _nameField.x; _nameField.height = 20; var format:TextFormat = new TextFormat(DEFAULT_FONT,14,0xfff0be,null,null,null,null,null,TextFormatAlign.LEFT); _nameField.setTextFormat(format); _nameField.defaultTextFormat = format; addChild(_nameField); // 设置姓名文本的选中颜色 new TextFieldColor(_nameField, format.color as uint, 0xffffff, 0x000000); // 加入输入错误提示框 _nameTip = new TextField(); _nameTip.selectable = false; _nameTip.defaultTextFormat = new TextFormat(DEFAULT_FONT,12,0xff0000,null,null,null,null,null,TextFormatAlign.CENTER,null,null,null,3); _nameTip.filters = [new GlowFilter(0x281B1A,1,2,2,4.5)]; _nameTip.width = width; _nameTip.height = 20; _nameTip.y = _nameField.y - _nameField.height - 5; addChild(_nameTip); // 加入开始游戏按钮 _createBtn = new createBtn() as MovieClip; _createBtn.buttonMode = true; _createBtn.x = _bg.x + (_bg.width - _createBtn.width) / 2; _createBtn.y = 435; addChild(_createBtn); _createBtn.gotoAndStop(1); } /** * 监听事件 * */ private function initEvent():void { _createBtn.addEventListener(MouseEvent.CLICK,createClickHandler); _createBtn.addEventListener(MouseEvent.MOUSE_OVER,btnMouseHandler); _createBtn.addEventListener(MouseEvent.MOUSE_OUT,btnMouseHandler); _createBtn.addEventListener(MouseEvent.MOUSE_DOWN,btnMouseHandler); _createBtn.addEventListener(MouseEvent.MOUSE_UP,btnMouseHandler); _suiji.addEventListener(MouseEvent.CLICK,suijiClickHandler); _nameField.addEventListener(TextEvent.TEXT_INPUT, textInputHandler); _nameField.addEventListener(Event.CHANGE, textChangeHandler); _nameField.addEventListener(MouseEvent.CLICK, nameClickHandler); addEventListener(Event.ADDED_TO_STAGE, addToStageHandler); } /** * 卸载事件 * */ private function removeEvent():void { removeEventListener(Event.ADDED_TO_STAGE, addToStageHandler); _createBtn.removeEventListener(MouseEvent.CLICK,createClickHandler); _createBtn.removeEventListener(MouseEvent.MOUSE_OVER,btnMouseHandler); _createBtn.removeEventListener(MouseEvent.MOUSE_OUT,btnMouseHandler); _createBtn.removeEventListener(MouseEvent.MOUSE_DOWN,btnMouseHandler); _createBtn.removeEventListener(MouseEvent.MOUSE_UP,btnMouseHandler); _suiji.removeEventListener(MouseEvent.CLICK,suijiClickHandler); _nameField.removeEventListener(TextEvent.TEXT_INPUT, textInputHandler); _nameField.removeEventListener(Event.CHANGE, textChangeHandler); _nameField.removeEventListener(MouseEvent.CLICK, nameClickHandler); } /** * 角色创建界面添加到舞台,需要让界面居中 * 因为舞台大小可能小于角色创建界面大小 */ private function addToStageHandler(event:Event) : void { this.x = (stage.stageWidth - width) / 2; this.y = (stage.stageHeight - height) / 2; } /** * 检测nick的合法性,不合法则输出提示信息 * @return 返回昵称是否合法 * */ private function checkNickName() : Boolean { var n:int = _filterUtils.checkLen(_nameField.text); // 检测长度是否合法 if (n < 2) { _nameTip.htmlText = "名称输入错误"; return false; } // 限制输入长度 if (n > 12) { _nameField.maxChars = _nameField.text.length; // 长度大于12个字符,截断 _nameField.text = _filterUtils.getStr(_nameField.text, 12); } else _nameField.maxChars = 0; // 检测字符合法性 if (!_filterUtils.checkNameAllow(_nameField.text)) { _nameTip.htmlText = "名称不合法"; return false; } // 名称合法,返回真 return true; } /** * 文本改变事件 * 由于最后一个字符时中文已经输入成功,可能导致最后一个中文显示出来 * */ private function textChangeHandler(event:Event) : void { // 名称合法,什么都不显示 if (checkNickName()) _nameTip.htmlText = ""; } /** * 文本输入事件,用来标识是输入名称还是随机名称 * */ private function textInputHandler(event:TextEvent) : void { // 如果敲入的是回车,则创建角色 if (event.text.charCodeAt(0) == 13) { createClickHandler(null); return; } // 输入了文本,表示不再是随机名称 _isRndName = false; } /** * 文本被点击处理 * 被点击时,如果文本之前没有被选中,则设置文本为选中状态 * 这样可以直接输入文本 * */ private function nameClickHandler(event:MouseEvent) : void { // 如果是随机名字,且点击了最后的项,则选中全部 if (_isRndName && _nameField.getLineIndexOfChar(_nameField.selectionBeginIndex) == -1) _nameField.setSelection(0, _nameField.text.length); } /** * 完成姓名文件加载后处理 * @param evt * */ private function nickLoadComplete(evt:Event):void { _nickLoader.removeEventListener(Event.COMPLETE,nickLoadComplete); _nickLoader.removeEventListener(IOErrorEvent.IO_ERROR,nickIoerrorHandler); // if(_isDispose) return; var nickBytes:ByteArray = _nickLoader.data as ByteArray; nickBytes.inflate(); // nickBytes.position = 0; var nickString:String = nickBytes.readUTFBytes(nickBytes.length); var arr:Array = nickString.split("|"); _xingArr = arr[0].split(","); _ming1Arr = arr[1].split(","); _ming2Arr = arr[2].split(","); // 显示随机按钮 addChild(_suiji); //随机姓名 if(_nameField.text == "") { setRndNick(); } } /** * 加载错误处理 * @param evt * */ private function nickIoerrorHandler(evt:IOErrorEvent):void { _nickLoader.removeEventListener(Event.COMPLETE,nickLoadComplete); _nickLoader.removeEventListener(IOErrorEvent.IO_ERROR,nickIoerrorHandler); } /** * 随机生成姓名 * */ private function setRndNick():void { if(_currentBtn == null) { return; } var nick:String = _xingArr[int(Math.random() * _xingArr.length)]; if (_currentBtn.*** % 2 == 1) { nick += _ming1Arr[int(Math.random() * _ming1Arr.length)]; } else { nick += _ming2Arr[int(Math.random() * _ming2Arr.length)]; } // 如果随到的名字包含过滤词,则重新随机 if (!_filterUtils.checkNameAllow(nick)) setRndNick(); else { _nameField.text = nick; _isRndName = true; _nameField.setSelection(0, -1); } } /** * 点击角色按钮事件处理 * @param evt * */ private function btnClickHandler(evt:MouseEvent):void { setSelected(evt.currentTarget as RoleSelectBtn); } /** * 移入角色按钮 * */ private function btnRollOverHandler(event:MouseEvent) : void { var btn:RoleSelectBtn = event.target as RoleSelectBtn;; TweenLite.to(btn, 0.3, {scaleX:1.1, scaleY:1.1, x:btn.rawX-btn.width*0.05, y:btn.y-btn.height*0.05}); var a:Bitmap = null; var b:int = 1; a = new Bitmap(); } /** * 移出角色按钮 * */ private function btnRollOutHandler(event:MouseEvent) : void { var btn:RoleSelectBtn = event.target as RoleSelectBtn; TweenLite.to(btn, 0.3, {scaleX:1.0, scaleY:1.0, x:btn.rawX, y:btn.rawY}); } /** * 选择按钮后处理 * @param btn * */ private function setSelected(btn:RoleSelectBtn):void { // 选中角色相同,不处理 if (_currentBtn == btn) return; // 如果没有角色选中,不处理 if (btn == null) return; // 取消上次选中的按钮状态 if(_currentBtn) { _currentBtn.selected = false; } // 设置当前选中为新的选中 _currentBtn = btn; _currentBtn.selected = true; // 如果随机的名称,则在切换时需要重新随机名称 if (_isRndName) setRndNick(); } /** * 点击进入游戏 * @param evt * */ private function createClickHandler(evt:MouseEvent):void { // 如果检查合法,则设置数据信息 if (checkNickName()) { _nick = _nameField.text; _data["createRole"](_currentBtn.career + 1, _currentBtn.***, _nick, socketBack); } } /** *鼠标在开始按钮上的事件 * @param e * */ private function btnMouseHandler(e:MouseEvent):void { switch (e.type) { case MouseEvent.MOUSE_OVER: _createBtn.gotoAndStop(2); break; case MouseEvent.MOUSE_OUT: _createBtn.gotoAndStop(1); break; case MouseEvent.MOUSE_DOWN: _createBtn.gotoAndStop(3); break; case MouseEvent.MOUSE_UP: _createBtn.gotoAndStop(1); break; } } /** * 点击随机按钮处理 * @param evt * */ private function suijiClickHandler(evt:MouseEvent):void { _nameField.text = ""; setRndNick(); } /** * 回调方法:后台返回结果 * @param data * */ private function socketBack(data:ByteArray):void { //如果创建成功 if(data.readBoolean()) { data.readUTF(); var t:Number = data.readUnsignedInt(); t = (t * 256) * 256 * 256 * 256 + data.readUnsignedInt(); _data["callback"](_nick,t); //回调姓名和id dispose(); } else { var tt:String = data.readUTF(); if(tt == "失败") { _nameTip.htmlText ="名称已存在"; } else { _nameTip.htmlText = tt; } } } /** * 释放所有资源 * */ public function dispose():void { removeEvent(); TweenLite.killTweensOf(this); for each(var btn:RoleSelectBtn in _btns) { btn.removeEventListener(MouseEvent.CLICK,btnClickHandler); btn.removeEventListener(MouseEvent.ROLL_OVER, btnRollOverHandler); btn.removeEventListener(MouseEvent.ROLL_OUT, btnRollOutHandler); btn.dispose(); btn = null; } _titleBg = null;; _logo = null; _bg = null; _btns = null; _currentBtn = null; _createBtn = null; _data = null; _nickLoader = null; _filterUtils = null; _suiji = null; _xingArr = null; _ming1Arr = null; _ming2Arr = null; _nameField = null; _nameTfbg = null; _nameTip = null; if(parent) parent.removeChild(this); while (numChildren) { var child:DisplayObject = removeChildAt(0); if (child is Bitmap) { if ((child as Bitmap).bitmapData != null) (child as Bitmap).bitmapData.dispose(); (child as Bitmap).bitmapData = null; } } _isDispose = true; } } }
  6. Hi, I've met an error when I use TweenLite.to,and the version of TweenLite is 11.698. This error happens just several times. Can somebody help me? Thanks in advance.
×
×
  • Create New...