﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>癫狂蚊子的痴狂世界 &#187; actionscript3</title>
	<atom:link href="http://www.askgame.com.cn/index.php/game/tag/actionscript3/feed" rel="self" type="application/rss+xml" />
	<link>http://www.askgame.com.cn</link>
	<description>一切对我而言都是游戏! Everything is Game!</description>
	<lastBuildDate>Wed, 07 Jul 2010 07:20:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用星际学习设计模式之一(actionscript3版):工厂方法模式的学习</title>
		<link>http://www.askgame.com.cn/index.php/game/88</link>
		<comments>http://www.askgame.com.cn/index.php/game/88#comments</comments>
		<pubDate>Tue, 06 Jan 2009 09:44:25 +0000</pubDate>
		<dc:creator>癫狂蚊子</dc:creator>
				<category><![CDATA[others]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[设计模式]]></category>
		<category><![CDATA[工厂方法模式]]></category>
		<category><![CDATA[星际]]></category>

		<guid isPermaLink="false">http://www.askgame.com.cn/?p=88</guid>
		<description><![CDATA[早几天看了一下设计模式的简单工厂模式，这两天再看工厂方法模式，感觉虽然第一次接触设计模式，但简单看了一下后发现，原来自己曾经的有些思路正和设计模式中所做的一样，正如有人所说的，设计模式并不是一个新的东西，而是总结一下你程序设计中的思路。
再接再厉，接下分享下我看工厂方法模式的心得吧！
上次的简单工厂模式解决了根据传入的参数动态返回对象的问题，一个兵工厂里面可以根据你传入的参数来返回marine或者是fireman，而大多数时候，我们并不是直接返回参数，而需要对传回的参数进入判断，或者是判断是否满足实例化对象的条件，在星际中，制造机枪兵或者火焰兵是需要判断资源是否足够，这些都可以放在工厂类中，但这样会造成代码的臃肿，我对快刀浪子的一名话印象深刻，大意是每个类需要有其生成，销毁等等所有的方法，使用时只管实例化，根据上面两个思路，我们将判断资源的代码分别放在两个独立的具体的工厂当中，负责真正的新建对象的任务。主工厂负责分配任务。
先看思路：简单工厂模式中的工厂类（兵种制造器的类）保持不变，增加一个制造接口，定义一个实际制造对象的方法，然后定义各个具体制造不同对象的工厂，同时要求这些工厂执行这个制造接口，让这些工厂去实现实际制造对象的方法。

再看代码：
Main.as

/*
原载于:http://www.askgame.com.cn
癫狂蚊子
*/
package {
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.text.TextField;
	public class Main extends MovieClip {
		public static var ore:int=1000;
		public static var gas:int=200;
		//生产兵的种类
		var type:String="";
		//生成制造工厂
		var barrack:Barrack=new Barrack();
		public function Main():void {
			stage.addEventListener(KeyboardEvent.KEY_DOWN,createHandle);
		}
		private function createHandle(e:KeyboardEvent):void {
			type=String.fromCharCode(e.charCode);
			var product=barrack.create(type);
			if(product!=null) stage.addChild(product);
		}
	}
}

主工厂类及具体工厂类Barrack.as

public class Barrack {
	//maxRow:360/30-1=11;maxCol:150/30-1=4
	private var row:int=0;
	private var col:int=0;
	public function create(type:String):DisplayObject {
		var productFactory;
		var product;
		switch (type) {
			case "m" :
				productFactory=new MarineFactory();
				break;
			case "f" :
				productFactory=new FiremanFactory();
				break;
			default :
				return null;
		}
		//设定坐标
		product=productFactory.beginCreate();
		if(product==null){
			return null;
		}
		product.x=row*30;
		product.y=col*30;
		row++;
		if (row>11) {
			row=0;
			col++;
		}
		return [...]]]></description>
		<wfw:commentRss>http://www.askgame.com.cn/index.php/game/88/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>黑客大赛小游戏</title>
		<link>http://www.askgame.com.cn/index.php/game/62</link>
		<comments>http://www.askgame.com.cn/index.php/game/62#comments</comments>
		<pubDate>Mon, 22 Dec 2008 07:00:49 +0000</pubDate>
		<dc:creator>癫狂蚊子</dc:creator>
				<category><![CDATA[作品]]></category>
		<category><![CDATA[我的代码世界]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[flash game]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://www.askgame.com.cn/?p=62</guid>
		<description><![CDATA[学校在推广一个防黑大赛，里面需要做一个小游戏，按老大所提供的游戏模式小搞了一个，当做学习as3中的一个案例好了，感谢小宝老师及as3论坛闪刀浪子的帮助！
总结：
1.OOP思想的应用：一个实例的应该有自己的添加、移动、移除等等方法，而使用此类的时候只管实例化。
2.鼠标事件的理解：MouseEvent中的CLICK包含了MOUSE_UP及MOUSE_DOWN,在此游戏当中,使用DOWN貌似比CLICK要好点~

游戏如下:

]]></description>
		<wfw:commentRss>http://www.askgame.com.cn/index.php/game/62/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>银河选秀FLASH的源代码(主场景类文件)</title>
		<link>http://www.askgame.com.cn/index.php/game/11</link>
		<comments>http://www.askgame.com.cn/index.php/game/11#comments</comments>
		<pubDate>Sat, 01 Nov 2008 06:26:40 +0000</pubDate>
		<dc:creator>癫狂蚊子</dc:creator>
				<category><![CDATA[我的代码世界]]></category>
		<category><![CDATA[actionscript3]]></category>

		<guid isPermaLink="false">http://www.askgame.com.cn/?p=11</guid>
		<description><![CDATA[用AS3真切的体会到flash AS3带给我们的代码与美工分离的好处,这个小程序只用了一个下午的辅导课的时间,我在一个教室写代码,同事在另外一间教室画ps,下课的时候交流一下想法,下午下班的时候把我的类名一填,晚上就开始使用了,当然,只考虑效果的实现,其他方面考虑的还很多,也许有时候的时候再会想到弄下吧!
公布源码如下,有兴趣的朋友一起研究一下

package {
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.events.*;
	import flash.utils.Timer;
	public class pickStu extends MovieClip {
		var siteSprite:Sprite;
		var arrSite:Array=new Array;
		var btnPick:BtnPush;//开始按钮
		var btnEndPick:BtnEndPush;//结束按钮
		var lastPick:int=-1;//上一次选择的电脑索引号
		var timers:Timer;
		var jg:int;
		const ROW:int=6;
		const COL:int=8;		
		function pickStu() {
			siteSprite=new Sprite();
			//生成座位表
			for (var i:int=0; i < ROW; i++) {
				for (var j:int=0; j < COL; j++) {
					var site:Computer=new Computer;
					siteSprite.addChild(site);
					if (j >= COL/2) {
						site.x=42 * j + 55;
						site.y=53 * i;
					} else {
						site.x=42 * [...]]]></description>
		<wfw:commentRss>http://www.askgame.com.cn/index.php/game/11/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
