MC新手入门(四十一)------ 愤怒小狗制作二
添加主界面 添加背景: 添加“actAPbg”角色,再添“animInfCheck”,“animInfMain”,“animInfOver”,作为背景图片。 添加按钮: 添加“actAPBtn”角色,再添“animBtnHelp”,“animBtnPro”,“animBtnQuit”,“ animBtnRetry”,“animBtnStart”,“animBtnTochs”做为按钮相关的图片。在“actAPBtn”角色中,添加“CreateActor”,“Mouse Button Down”,“MouseButton Up”三个事件: 1. “创建角色”的脚本编辑器行为中,添加代码使动画帧不会自动播放。代码如下: ChangeAnimationDirection("EventActor", STOPPED); //动画停止animpos = 0; //在第0帧 2. “鼠标键按下”的脚本编辑器行为中,添加代码使动画帧在鼠标按下时换成第1帧。代码如下: animpos = 1; //在第1帧 3. “鼠标键弹起”的脚本编辑器行为中,添加代码调用第一关的函数,代码如下: char animName[32] =" "; strcpy(animName, getAnimName(animindex)); animpos = 0; if(strcmp(animName,"AD_button_start") == 0)//点开始进入到游戏的选关界面。 { DestroystartFrame(); CreateLevelFrame(); } else if(strcmp(animName,"fanhui") == 0)//返回到主界面 { DestroyLevelFrame(); startFrame(); } elseif(strcmp(animName,"AD_button_quit") == 0)//退出 { ExitGame(); } 在这里就将第二关卡,完成了。现在可以测试一下。 添加关卡: 添加“actLevelNumber2”角色,再添“animBtnCheck2”,做为进入第二关的按钮。 添加“actLevelNumber3”角色,再添“animBtnCheck3”,做为进入第三关的按钮。 添加得到骨头: 创建界面: 在全局代码(startpage)中,用代码添加创建的角色。这样方便修改: 注意:下面主要使用到函数“CreateActor”和“DestroyActor”,使用方法请查看附录。 void startFrame()//开始界面 { Actor *bgActor; Actor *buttonActor; bgActor =CreateActor("AP_bg", "AD_inf_main", "","", 0,0, true);//背景 bgActor->x =view.x + bgActor ->width * 0.425; bgActor ->y = view.y+ bgActor->height / 2; buttonActor =CreateActor("AP_Button", "AD_button_start", "","", 0, 0, true);//开始游戏 buttonActor->x =view.x + view.width * 0.25; buttonActor->y = view.y+ view.height * 0.65; buttonActor =CreateActor("AP_Button", "AD_button_help", "","", 0, 0, true);//帮助 buttonActor->x =view.x + view.width * 0.55; buttonActor->y = view.y+ view.height * 0.65; buttonActor =CreateActor("AP_Button", "AD_button_pro", "","", 0, 0, true);//制作组 buttonActor->x =view.x + view.width * 0.85; buttonActor->y = view.y+ view.height * 0.65; } void DestroystartFrame()//删除开始界面 { DestroyActor("AP_bg"); DestroyActor("AP_Button"); } /////////////////////////////////////////////////////////////////////////////////////////// void CreateLevelFrame()//关卡选择界面 { Actor *bgActor; Actor *levelActor; Actor *buttonActor; bgActor = CreateActor("AP_bg","AD_inf_check", "", "", 0,0, true);//背景 bgActor->x =view.x + bgActor->width * 0.425; bgActor ->y = view.y+ bgActor->height / 2; levelActor =CreateActor("AP_LevelNumber", "AD_button_check1","", "", 0,0, true); levelActor->x =view.x + view.width * 0.25; levelActor->y=view.y + view.height * 0.3; levelActor =CreateActor("AP_LeveNumber2", "AD_button_check2","", "", 0,0, true); levelActor->x =view.x + view.width * 0.55; levelActor->y = view.y+ view.height * 0.3; levelActor =CreateActor("AP_LeveNumber3", "AD_button_check3","", "", 0,0, true); levelActor->x =view.x + view.width * 0.85; levelActor->y = view.y+ view.height * 0.3; buttonActor =CreateActor("AP_Button", "fanhui", "","", 0, 0, true);//返回 buttonActor->x =view.x + view.width * 0.65; buttonActor->y=view.y + view.height * 0.65; } void DestroyLevelFrame()//删除关卡选择界面 { DestroyActor("AP_bg"); DestroyActor("AP_LevelNumber"); DestroyActor("AP_Button"); DestroyActor("AP_LeveNumber2"); DestroyActor("AP_LeveNumber3"); } //////////////////////////////////////////////////////////////////////////////////////////////// void CreatePauseorLoseFrame()//游戏失败界面及暂停界面 { Actor *bgActor; Actor*scoresStateActor; Actor *levelActor; Actor *buttonActor; Actor *boneActor; int i = 0; bgActor =CreateActor("AP_bg", "AD_inf_over", "","", 0,0, true);//背景 bgActor->x =view.x + bgActor->width * 0.425; bgActor ->y = view.y+ bgActor->height / 2; for(i = 0; i <=i_hintBone; i++) { boneActor =CreateActor("AP_bone", "bone4", "", "",0,0, true);//得到的骨头 boneActor->x =view.x + view.width * 0.5; boneActor->y =view.y + view.height * 0.35; boneActor->animpos= i; } scoresStateActor =CreateActor("AP_ScoresState", "background_LittleScreen","", "", 0,0, true);//分数状况 scoresStateActor->x= view.x + view.width * 0.5; scoresStateActor->y= view.y + view.height * 0.3; buttonActor =CreateActor("AP_Button", "AD_button_retry", "","", 0, 0, true);//重新开始 buttonActor->x =view.x + view.width * 0.35; buttonActor->y = view.y+ view.height * 0.65; buttonActor =CreateActor("AP_Button", "AD_button_tochs", "","", 0, 0, true);//进入关卡选择界面 buttonActor->x =view.x + view.width * 0.65; buttonActor->y =view.y + view.height * 0.65; } voidDestroyPauseorLoseFrame()//删除游戏失败界面及暂停界面 { DestroyActor("AP_bg"); DestroyActor("AP_ScoresState"); DestroyActor("AP_Button"); DestroyActor("AP_bone"); } //////////////////////////////////////////////////////////////////////////////////////////////// voidCreatepassFrame() //通关界面 { Actor *bgActor; Actor*scoresStateActor; Actor *levelActor; Actor *buttonActor; Actor *boneActor; int i = 0; bgActor =CreateActor("AP_bg", "AD_inf_over", "","", 0,0, true);//背景 bgActor->x =view.x + bgActor->width * 0.425; bgActor ->y = view.y+ bgActor->height / 2; for(i = 0; i <=i_hintBone; i++) { boneActor= CreateActor("AP_bone", "bone4","", "", 0,0, true);//得到的骨头 boneActor->x = view.x + view.width * 0.5; boneActor->y = view.y + view.height * 0.35; boneActor->animpos = i; } scoresStateActor =CreateActor("AP_ScoresState", "background_LittleScreen","", "", 0,0, true);//分数状况板 scoresStateActor->x= view.x + view.width * 0.5; scoresStateActor->y= view.y + view.height * 0.3; buttonActor =CreateActor("AP_Button", "AD_button_retry", "","", 0, 0, true);//重新开始 buttonActor->x =view.x + view.width * 0.25; buttonActor->y = view.y+ view.height * 0.65; buttonActor =CreateActor("AP_Button", "AD_button_tochs", "","", 0, 0, true);//进入关卡选择界面 buttonActor->x =view.x + view.width * 0.55; buttonActor->y =view.y + view.height * 0.65; buttonActor = CreateActor("AP_Button","cf_ButtonStartGame", "", "", 0, 0, true);//进入下一关 buttonActor->x =view.x + view.width * 0.85; buttonActor->y =view.y + view.height * 0.65; } void DestroypassFrame()//删除通关界面 { DestroyActor("AP_bg"); DestroyActor("AP_ScoresState"); DestroyActor("AP_Button"); DestroyActor("AP_bone"); } 创建一个“start”角色。调用全局脚本内的函数。在CreateActor里调用开始界面。 |