本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:从零开始学社交游戏开发(11)
原文地址:http://www.360ito.com/article/641.html
上一节讲到神力面板的创建,接下来的这节还是围绕UI部分。
sound_btn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1, "mc1101")); sound_btn.allowCtrlAnim = false; sound_btn.toolTip = LanguageCn.getInstance().getStr(90052); sound_btn.toolTipDirection = ToolTipManager.DOWN; sound_btn.tag = 1; sound_btn.addEventListener(MouseEvent.CLICK, onSoundBtnClick); sound_btn.setPosition(0, 0); addChild(sound_btn); music_btn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1, "mc1102")); music_btn.allowCtrlAnim = false; music_btn.tag = 1; music_btn.toolTip = LanguageCn.getInstance().getStr(90053); music_btn.toolTipDirection = ToolTipManager.DOWN; music_btn.addEventListener(MouseEvent.CLICK, onMusicBtnClick); music_btn.setPosition(44, 0); addChild(music_btn); help_btn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1, "res11002")); help_btn.setPosition(90, 0); help_btn.addEventListener(MouseEvent.CLICK, onHelpBtnEventClick); addChild(help_btn);音效、音乐按钮按下后,设置音效和音乐状态,并将数据保存到服务器上,代码如下:
// 音乐设置按钮按下 private function onMusicBtnClick(event:MouseEvent):void { if (music_btn.tag == 1) { SoundCtrl.getInstance().m_musicOpen = false; music_btn.tag = 0; (music_btn.skin as MovieClip).gotoAndStop(2); } else { SoundCtrl.getInstance().m_musicOpen = true; music_btn.tag = 1; (music_btn.skin as MovieClip).gotoAndStop(1); } // 通知服务端设置变化 var param:Object = {cmd: JSON.encode({api: TServerCmd.CFG_SAVE, key: JFApp.key, music: music_btn.tag, sound: sound_btn.tag})}; ServerProxy.getInstance().onAppDo(param, TServerCmd.CFG_SAVE); } // 音效按钮按下 private function onSoundBtnClick(event:MouseEvent):void { if (sound_btn.tag == 1) { SoundCtrl.getInstance().m_soundOpen = false; sound_btn.tag = 0; (sound_btn.skin as MovieClip).gotoAndStop(2); } else { SoundCtrl.getInstance().m_soundOpen = true; sound_btn.tag = 1; (sound_btn.skin as MovieClip).gotoAndStop(1); } // 通知服务端设置变化 var param:Object = {cmd: JSON.encode({api: TServerCmd.CFG_SAVE, key: JFApp.key, music: music_btn.tag, sound: sound_btn.tag})}; ServerProxy.getInstance().onAppDo(param, TServerCmd.CFG_SAVE); }
帮助按钮按下后,需要弹出一个帮助窗口,帮助窗口里面有10页,玩家可以翻页看。先来创建一个帮助窗口,如下图:
addChild(JFDynamicResManager.getInstance().displayObjectByName(1,"res1901"));
FCloseBtn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1,"mc1802"));
FPageInfoLabel = UIManager.getTextField("", tmpFont, 0xFFFFFF, TextFieldAutoSize.NONE); FLeftScrollBtn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1,"mc0503")); FRightScrollBtn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1,"mc0504"));4、创建页列表框
FHelpPageList = new List(ITEM_WIDTH, ITEM_HEIGHT, LIST_WIDTH, LIST_HEIGHT, HelpPageItem, List.horizontal_SCROLL_ITEM);
FHelpPageList.setData([1,2,3,4,5,6,7,8,9,10]);
FLeftScrollBtn.addEventListener(MouseEvent.CLICK,onLeftScroll); FRightScrollBtn.addEventListener(MouseEvent.CLICK,onRightScroll);
override public function set data(data_:Object):void { super.data = data_; setSkin(JFDynamicResManager.getInstance().displayObjectByName(1,'res19_'+int(data_).toString())); }
private function onHelpBtnEventClick(event:MouseEvent):void { HelpUI.instance.show(true); }
// 创建功能面板 FFunctionPanel = new TFunctionPanel(); JFApp.appMainSprite.uiLayer.addChild(FFunctionPanel as TFunctionPanel);
点击音乐按钮既然能听到背景音乐了,呵呵呵,以后再讲解游戏音效和音乐部分,点击帮助按钮后,可以看到弹出了一个帮助窗口。可以点左右按钮翻页,感觉炫不?来个效果图:
private static var instance:IGiftPanel = null; public static function get Instance():IGiftPanel { if (instance == null) { new TGiftPanel(); } return instance; } public function TGiftPanel() { if (instance != null) { throw new Error("单列模式"); } instance = this; ... }在需要操作礼品栏的地方只要通过 get Instance()获取时,会在第一次获取时先创建礼品栏(new TGiftPanel();),在构造方法里处理了UI布局和事件初始化。代码如下:
public function TGiftPanel() { if (instance != null) { throw new Error("单列模式"); } instance = this; this.setSkin(JFDynamicResManager.getInstance().displayObjectByName(1, "res1703")); x = 770; y = 72; initChild(); initEvent(); }礼品栏中主要有下面几个元素:
private function initChild():void { const ITEM_WIDTH:int = 53; const ITEM_HEIGHT:int = 53; const LIST_WIDTH:int = 110; const LIST_HEIGHT:int = 55; const SHOW_OFFSET_X:int = 60; const SHOW_OFFSET_Y:int = 8; FPropsList = new List(ITEM_WIDTH, ITEM_HEIGHT, LIST_WIDTH, LIST_HEIGHT, TGiftItem, List.horizontal_SCROLL_ITEM); (FPropsList as List).x = SHOW_OFFSET_X; (FPropsList as List).y = SHOW_OFFSET_Y; addChild(FPropsList as List); // 页信息 var tmpFont:IJFFont = FontLibrary.getInstance().song10Font; tmpFont.setBold(false); tmpFont.setAlign(TextFormatAlign.CENTER); FPageInfoLabel = UIManager.getTextField("", tmpFont, 0xFFFFFF, TextFieldAutoSize.NONE); FPageInfoLabel.x = 18; FPageInfoLabel.y = 40; FPageInfoLabel.width = 32; FPageInfoLabel.height = 18; FPageInfoLabel.text = "0/0"; FPageInfoLabel.filters = [JFFilter.getDropShadowFilter()]; addChild(FPageInfoLabel); // 上页按钮 FLeftScrollBtn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1,"mc1702")); FLeftScrollBtn.x = 3; FLeftScrollBtn.enable = false; FLeftScrollBtn.y = 37; addChild(FLeftScrollBtn); // 下页按钮 FRightScrollBtn = new Button(JFDynamicResManager.getInstance().displayObjectByName(1,"mc1701")); FRightScrollBtn.x = 49; FRightScrollBtn.enable = false; FRightScrollBtn.y = 37; addChild(FRightScrollBtn); }再在VGUIManager的init中加入TGiftPanel.Instance.addToStage();,如下图:
共有0个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止