Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
12
返回列表 发新帖
打印 上一主题 下一主题

请问有用Adobe Flash CS4做flash game的高手吗??来分享下action script 3.0好吗~~

[复制链接]

20

主题

4

好友

2395

积分

白金长老

Rank: 10

11#
发表于 2010-2-1 10:58 AM |只看该作者
上次初学AS3.0的时候,我充分利用了AS3 的OOP,实现2楼所说的,很直观,很好用,做了一个会走动会跳的简单Hero。。。


回复

使用道具 举报

6

主题

0

好友

589

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

12#
发表于 2010-2-1 10:10 PM |只看该作者
原帖由 fyhao 于 2010-2-1 10:58 AM 发表
上次初学AS3.0的时候,我充分利用了AS3 的OOP,实现2楼所说的,很直观,很好用,做了一个会走动会跳的简单Hero。。。

来分享下吧~?你怎样做~


回复

使用道具 举报

20

主题

4

好友

2395

积分

白金长老

Rank: 10

13#
发表于 2010-2-5 11:17 PM |只看该作者
在Flash CS4我有define Land, Arm Hero Movieclip。
Land有很多个Frame,不同的frame代表不同的地形
Arm是Hero的手,Hero走路的时候Arm会摇动。
Hero可以向左向右,也可以跳。
我设定舞台的Main as file 为 LevelMain.as

  1. package {
  2.         import flash.display.MovieClip;
  3.         import com.level.World;
  4.         import com.level.Config;
  5.         import com.level.Hero;
  6.         import com.level.Control;
  7.         import flash.events.Event;
  8.         import flash.events.KeyboardEvent;
  9.         import flash.ui.Keyboard;
  10.        
  11.         public class LevelMain extends MovieClip {
  12.                 var config:Config = new Config();
  13.                 var world:World = new World();
  14.                 var hero:Hero = new Hero();
  15.                 var control:Control = new Control();
  16.                
  17.                
  18.                
  19.                
  20.                
  21.                 public function LevelMain() {
  22.                         initGame();
  23.                 }
  24.                
  25.                 public function initGame():void {
  26.                        
  27.                         config.configWorld(world);
  28.                        
  29.                         config.configHero(hero);
  30.                        
  31.                         config.configControl(control);
  32.                        
  33.                         addChild(world);
  34.                         addChild(hero);
  35.                        
  36.                         this.addEventListener(Event.ENTER_FRAME, gameloop);
  37.                         stage.addEventListener(KeyboardEvent.KEY_UP, control.key_up);
  38.                         stage.addEventListener(KeyboardEvent.KEY_DOWN, control.key_down);
  39.                 }
  40.                
  41.                 public function gameloop(e:Event):void {
  42.                         heromove();
  43.                 }
  44.                
  45.                 public function heromove():void {
  46.                         var keyNames = control.getKeys();
  47.                         if(keyNames.length > 0) {
  48.                                 for(var i:int; i<keyNames.length; i++) {
  49.                                         var keyName:String = keyNames[i];
  50.                                         if(keyName != null) {
  51.                                                 hero.walk(keyName); // direction
  52.                                         }
  53.                                 }
  54.                         } else {
  55.                                 hero.stops();
  56.                         }
  57.                        
  58.                        
  59.                 }
  60.         }
  61. }
复制代码

在 folder com/level define 了 5 个 class
Arm.as

  1. package com.level {
  2.         import flash.display.MovieClip;
  3.        
  4.         public class Arm extends MovieClip {
  5.                 var _isSwing:Boolean = false;
  6.                
  7.                 public function Arm() {
  8.                        
  9.                 }
  10.                
  11.                 public function startSwing():void {
  12.                         this.gotoAndPlay(2);
  13.                         _isSwing = true;
  14.                 }
  15.                
  16.                 public function stopSwing():void {
  17.                         this.gotoAndStop(1);
  18.                         _isSwing = false;
  19.                 }
  20.                
  21.                 public function isSwing():Boolean {
  22.                         return _isSwing;
  23.                 }
  24.         }
  25. }

复制代码


Config.as

  1. package com.level {
  2.         import com.level.World;
  3.         import com.level.Land;
  4.         import com.level.Hero;
  5.         import com.level.Control;
  6.         import flash.ui.Keyboard;
  7.         public class Config {
  8.                 public function Config() {
  9.                        
  10.                 }
  11.                
  12.                 public function configWorld(world:World):void {
  13.                         world.addLand(new Array(1,2,3,2,1,2,1,2,3,1,2,2,3));
  14.                         world.init();
  15.                 }
  16.                
  17.                 public function configHero(hero:Hero):void {
  18.                         hero.speed = 5;
  19.                         hero.x = 50;
  20.                         hero.y = 250;
  21.                 }
  22.                
  23.                 public function configControl(control:Control):void {
  24.                        
  25.                         control.addControl("left", Keyboard.LEFT);
  26.                         control.addControl("right", Keyboard.RIGHT);
  27.                         control.addControl("up", Keyboard.UP);
  28.                         control.addControl("down", Keyboard.DOWN);
  29.                        
  30.                 }
  31.         }
  32. }
复制代码


Config.as

  1. package com.level {
  2.         import flash.ui.Keyboard;
  3.         import flash.events.KeyboardEvent;
  4.         public class Control {
  5.                 var controls:Array = new Array();
  6.                 public function Control() {
  7.                        
  8.                 }
  9.                
  10.                 public function addControl(n:String, key:uint):void {
  11.                         controls.push(new Array(n, key, false));
  12.                 }
  13.                
  14.                 public function key_down(e:KeyboardEvent):void {
  15.                        
  16.                         for(var i:int; i<controls.length; i++) {
  17.                                 if(controls[i][1] == e.keyCode) {
  18.                                         controls[i][2] = true;
  19.                                 }
  20.                         }
  21.                 }
  22.                
  23.                 public function key_up(e:KeyboardEvent):void {
  24.                         for(var i:int; i<controls.length; i++) {
  25.                                 if(controls[i][1] == e.keyCode) {
  26.                                         controls[i][2] = false;
  27.                                 }
  28.                         }
  29.                 }
  30.                
  31.                 public function getKeys():Array {
  32.                         var keys = new Array();
  33.                         for(var i:int; i<controls.length; i++) {
  34.                                 if(controls[i][2] == true) {
  35.                                         keys.push(controls[i][0]);
  36.                                 }
  37.                         }
  38.                         return keys;
  39.                 }
  40.         }
  41. }
复制代码


Hero.as

  1. package com.level {
  2.         import flash.display.MovieClip;
  3.         import flash.events.Event;
  4.         public class Hero extends MovieClip {
  5.                 var _speed:int = 5;
  6.                
  7.                 var _jump:Boolean = false;
  8.                 var _yspeed:int = 0;
  9.                 var _gravity:int = 0;
  10.                
  11.                 public function Hero() {
  12.                        
  13.                         this.addEventListener(Event.ENTER_FRAME, updateStatus);
  14.                 }
  15.                
  16.                 public function updateStatus(e:Event):void {
  17.                         this.y += _yspeed;
  18.                         _yspeed += _gravity;
  19.                         if(this.y > 250) { // hit test here
  20.                                 this._gravity = 0;
  21.                                 this.y = 250;
  22.                                 this._jump = false;
  23.                         }
  24.                         trace(_yspeed);
  25.                 }
  26.                
  27.                 public function walk(direction:String):void {
  28.                        
  29.                        
  30.                         if(direction == "right") {
  31.                                 this.x += _speed;
  32.                                
  33.                         } else if (direction == "left") {
  34.                                 this.x -= _speed;
  35.                         } else if( direction == "up") {
  36.                                 if(_jump == false) {
  37.                                         this.startJump();
  38.                                 }
  39.                         } else if(direction == "down") {
  40.                                 this.y += speed;
  41.                         }
  42.                        
  43.                        
  44.                         if(!this.arm.isSwing()) {
  45.                                 this.arm.startSwing();
  46.                         }
  47.                 }
  48.                
  49.                 public function stops():void {
  50.                         this.arm.stopSwing();
  51.                 }
  52.                
  53.                 public function startJump():void {
  54.                         _jump = true;
  55.                         this._yspeed = -50;
  56.                         this._gravity = 10;
  57.                 }
  58.                
  59.                 public function set speed(value:int):void {
  60.                         _speed = speed;
  61.                 }
  62.                
  63.                 public function get speed():int {
  64.                         return _speed;
  65.                 }
  66.                
  67.         }
  68. }
复制代码


Land.as

  1. package com.level {
  2.         import flash.display.MovieClip;
  3.         public class Land extends MovieClip {
  4.                 var type:int = 0;
  5.                 public function Land(t:int) {
  6.                         type = t;
  7.                         init();
  8.                 }
  9.                
  10.                 public function init():void {
  11.                         if(type > 0) {
  12.                                 this.gotoAndStop("land_" + type);
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码


World.as

  1. package com.level {
  2.         import com.level.Land;
  3.         import flash.display.Sprite;
  4.         public class World extends Sprite {
  5.                 var lands = new Array();
  6.                 public function World() {
  7.                        
  8.                 }
  9.                
  10.                 public function addLand(types:Array):void {
  11.                         for(var i:int; i<types.length; i++) {
  12.                                
  13.                                 var land:Land = new Land(types[i]);
  14.                                 lands.push(land);
  15.                         }
  16.                 }
  17.                
  18.                 public function init():void {
  19.                         for(var i:int; i<lands.length; i++) {
  20.                                 lands[i].x = i * 100;
  21.                                 lands[i].y = 400;
  22.                                 addChild(lands[i]);
  23.                         }
  24.                 }
  25.         }
  26. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-1-10 01:18 AM , Processed in 0.092311 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部