2/3, 18«123»

[原]淘宝店家起义篇。。。

2008-11-5 23:21:05 原创 抢沙发(0)

最近受经济危机影响实在是无米可餐,加上家中兴起了开店热,于是也自己弄了个网店......
虽然淘宝的帐户较早就有了,现在才开....
目前卖家等级为0

不过,有些郁闷的是开店需要用到的图片,淘宝发布商品是不支持上传的,于是找了N多家

虽然最终被我找到了几个免费的图片供应站,但是仍然觉得很不爽,毕竟静态图片要表现的内容也算是比较小的。

于是,我本着万愚之精神,开始设想,如果taobao不提供上传,那至少可以提供一个图片的播放器给用户....不过,由于flash player有安全沙箱问题,无法装载外站图片,但不知道类似扒来的图片连接能不能用......或者,干脆用AVM1机制下的一些猥琐方法?? 没玩过......有谁知道可以告诉我下~~~~,厄,要不HtmlText纯载如图片映射??? 哎,不猜测了,这几日测试看看好了~~~

好吧,土人的设想是这么一副图片,主要是供给店主使用的,放在商品介绍上..... 这个成本应该比视频类的滴了吧............这样店主就应该很容易的展示自己的商品了,客户也容易逛到一个店后在一个窗口下所谓的无刷新搜索其他产品和比较产品以及欣赏产品了吧,(这句话我承认有点长了~~就委屈您囧一下吧~~)

好,来图土一土~~~ 超级打算嘛~~~

 

[原]JS和ActiveX通信获取使用中网卡MAC

2008-10-9 16:09:17 原创 抢沙发(0)

原先的文章参考:
http://www.faqts.com/knowledge_base/view.phtml/aid/9005/fid/125

由于笔记本或多网卡联网机器的原因,所以我们需要判断被系统选择使用的网卡,因此,需要在原文中的判断处获取所选择DNS列表来判断是否正在使用。

不知道还有什么更好的办法,本方法也是一种判断的方式:

以下为完全HTML源码:
(相关API请参考: http://www.xintend.com/Article/QFFrUjDCBWYWzjoBinNT.aspx )

  1. <HTML><HEAD><TITLE>WMI Scripting HTML</TITLE> 
  2. <META http-equiv=Content-Type content="text/html; charset=gb2312"> 
  3. <SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo> 
  4. document.forms[0].txtMACAddr.value=unescape(MACAddr);  
  5. document.forms[0].txtIPAddr.value=unescape(IPAddr);  
  6. document.forms[0].txtDNSName.value=unescape(sDNSName);  
  7.  
  8.   </SCRIPT> 
  9.  
  10. <SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo> 
  11.    if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)  
  12.     {  
  13.     if(objObject.MACAddress != null && objObject.MACAddress != "undefined" && objObject.DNSServerSearchOrder!=null)  
  14.      MACAddr = objObject.MACAddress;  
  15.     if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined" && objObject.DNSServerSearchOrder!=null)  
  16.      IPAddr = objObject.IPAddress(0);  
  17.     if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")  
  18.      sDNSName = objObject.DNSHostName;  
  19.      }  
  20.   </SCRIPT> 
  21.  
  22. <META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD> 
  23. <BODY> 
  24. <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT> 
  25. <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT> 
  26. <SCRIPT language=JScript> 
  27.    var service = locator.ConnectServer();  
  28.    var MACAddr ;  
  29.    var IPAddr ;  
  30.    var DomainAddr;  
  31.    var sDNSName;  
  32.     service.Security_.ImpersonationLevel=3;  
  33.     service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');  
  34.    </SCRIPT> 
  35.  
  36. <FORM id="formfoo" name="formbar" action="index.do" method="post"><INPUT value="00-11-11-B4-52-EF" name="txtMACAddr"> <INPUT value="210.42.38.50" name="txtIPAddr"> <INPUT value="zhupan" name="txtDNSName"> </FORM></BODY></HTML> 

 

[原]关于AS3的MovieClip的addFrameScript()方法个人理解

2008-9-4 23:23:57 原创 抢沙发(0)

网络上都早有了此方法的描述,但是描述的并不太在正确
网络的描述是这样的:
 

  1. addFrameScript(frame:unit,notify:Function):void


相信很多人都尝试过以下输出公共方法的函数
 

  1. describeType(); 

所以通过解析可以明显的看出来是类似:
 

  1. addFrameScript(...args):void

可以理解成为:
 

  1. addFrameScript(frame:Object, notify:Function):void

实际上我的猜测是

 

  1. //伪码  
  2. function addFrameScript(..args):void{  
  3.     var i:int=0;  
  4.     var frame:Object  
  5.     var notify::Function  
  6.     for(;i<args.length;i+=2){  
  7.        frame=args[i];  
  8.        notify=args[i+1];
  9.  //TODO:  
  10.  }  
  11.  

 用法:
 

  1. addFrameScript("frameLabel",func);  
  2. //或  
  3. addFrameScript(1,func); 

 

[原]动态注册点显示对象 AS3实现---Proxy方法

2008-8-26 23:59:33 原创 抢沙发(0)

由于之前的

动态注册点显示对象 AS3实现

不太适合多类型的显示对象DisplayObject复合应用,因此实际应用过程中采用了Proxy模式,这样
只要注册时使用对应的显示对象即可。
 
PS: 由于Blog限制,示例不能再摘要中显示,故请点击文章内部看玩具吧.....
 
示例:
操作:单击确定旋转/缩放点,按下并拖动鼠标则实现以旋转,鼠标滚轮则缩放对应的点。
 

源码:
 

  1. package  com.xintend.util {  
  2.     import flash.display.DisplayObject;  
  3.     import flash.display.Sprite;  
  4.     import flash.geom.Point;  
  5.     import flash.utils.Proxy;  
  6.     import flash.utils.flash_proxy;  
  7.  
  8.       
  9.     /**  
  10.     * [AS3]DynamicRegistrationProxy  
  11.     * 动态注册点代理   引用请保留此处信息及参考信息  
  12.     * @author telds[kingfo] www.xintend.com   
  13.     *   
  14.     *   
  15.     * 一级参考:  
  16.     *   作者: Darronschall        [ActionScript 2]  
  17.     *   站点: http://www.darronschall.com/weblog/archives/000054.cfm  
  18.     *   
  19.     * 二级参考:  
  20.     *   作者:     Robert Penner       [ActionScript 1]  
  21.     *   站点: www.robertpenner.com      
  22.     *   
  23.     */ 
  24.     public dynamic class DynamicRegistrationProxy extends Proxy {         
  25.           
  26.         public function DynamicRegistrationProxy(source:DisplayObject=null):void {  
  27.             _displayObject = source || new Sprite();  
  28.         }  
  29.           
  30.         override flash_proxy function callProperty(methodName:*, ... args):*  {  
  31.             var res:*;  
  32.             var a:Point;  
  33.             var b:Point;  
  34.             var method:String = methodName.toString();  
  35.             var property:String;  
  36.             switch (method) {  
  37.                 case 'setRegistrationByStage':  
  38.                     a = _displayObject.globalToLocal(new Point(args[0], args[1]));                    
  39.                     _stageRegX = args[0];  
  40.                     _stageRegY = args[1];         
  41.                     _regX = a.x;  
  42.                     _regY = a.y;  
  43.                 break;  
  44.                 case 'setRegistrationBySelf':  
  45.                     a = _displayObject.localToGlobal(new Point(args[0], args[1]));                    
  46.                     _regX = args[0];  
  47.                     _regY = args[1];          
  48.                     _stageRegX = a.x;  
  49.                     _stageRegY = a.y;  
  50.                 break;  
  51.                 case 'setPropRel':  
  52.                     a = _displayObject.parent.globalToLocal(_displayObject.localToGlobal(new Point(_regX, _regY)));  
  53.                     property = args[0].toString();  
  54.                     _displayObject[property] = args[1];           
  55.                     b = _displayObject.parent.globalToLocal(_displayObject.localToGlobal(new Point(_regX, _regY)));       
  56.                     _displayObject.x -= b.x - a.x;  
  57.                     _displayObject.y -= b.y - a.y;  
  58.                 break;                
  59.                 default:  
  60.                     res = _displayObject[method].apply(_displayObject, args);  
  61.                 break;  
  62.             }  
  63.             return res;  
  64.         }  
  65.           
  66.         override flash_proxy function getProperty(name:*):* {  
  67.             var res:*;  
  68.             var property:String = name.toString();  
  69.             switch (property) {  
  70.                 case 'regX':  
  71.                     res = _regX;  
  72.                 break;  
  73.                 case 'regY':  
  74.                     res = _regY;  
  75.                 break;  
  76.                 case 'stageRegX':  
  77.                     res = _stageRegX;  
  78.                 break;  
  79.                 case 'stageRegY':  
  80.                     res = _stageRegY;  
  81.                 break;  
  82.                 case 'x2':  
  83.                     res = _x2;  
  84.                 break;  
  85.                 case 'y2':  
  86.                     res = _y2;  
  87.                 break;  
  88.                 case 'scaleX2':  
  89.                     res = _displayObject.scaleX;  
  90.                 break;  
  91.                 case 'scaleY2':  
  92.                     res = _displayObject.scaleY;  
  93.                 break;  
  94.                 case 'rotation2':  
  95.                     res = _displayObject.rotation  
  96.                 break;  
  97.                 case 'source':  
  98.                     res = _displayObject;  
  99.                 break;  
  100.                 default:  
  101.                     res = _displayObject[property];  
  102.                 break;  
  103.             }  
  104.             return res;  
  105.         }  
  106.  
  107.         override flash_proxy function setProperty(name:*, value:*):void {  
  108.             var property:String = name.toString();            
  109.             switch (property) {  
  110.                 case 'regX':  
  111.                     _regX = value;  
  112.                 break;  
  113.                 case 'regY':  
  114.                     _regY = value;  
  115.                 break;  
  116.                 case 'stageRegX':  
  117.                     _stageRegX = value;  
  118.                 break;  
  119.                 case 'stageRegY':  
  120.                     _stageRegY = value;  
  121.                 break;  
  122.                 case 'x2':  
  123.                     _x2 += value - _displayObject.x;  
  124.                 break;  
  125.                 case 'y2':  
  126.                     _y2 += value - _displayObject.y;  
  127.                 break;  
  128.                 case 'scaleX2':  
  129.                     flash_proxy::callProperty('setPropRel',"scaleX", value);  
  130.                 break;  
  131.                 case 'scaleY2':  
  132.                     flash_proxy::callProperty('setPropRel',"scaleY", value);  
  133.                 break;  
  134.                 case 'rotation2':  
  135.                     flash_proxy::callProperty('setPropRel',"rotation", value);  
  136.                 break;  
  137.                 default:  
  138.                     _displayObject[property] = value;  
  139.                     break;  
  140.             }  
  141.         }  
  142.  
  143.           
  144.           
  145.         private var  _displayObject:DisplayObject;  
  146.         private var _regX:Number = 0;  
  147.         private var _regY:Number = 0;  
  148.         private var _stageRegX:Number = 0;  
  149.         private var _stageRegY:Number = 0;  
  150.         private var _x2:Number = 0;  
  151.         private var _y2:Number = 0;  
  152.     }  
  153.       

示例源码:
 

  1. package {  
  2.       
  3.     import com.xintend.util.DynamicRegistrationProxy;  
  4.     import flash.display.Bitmap;  
  5.     import flash.display.Sprite;  
  6.     import flash.events.MouseEvent;  
  7.     import flash.geom.Point;  
  8.       
  9.     public class Main extends Sprite    {  
  10.           
  11.         private var a:DynamicRegistrationProxy;  
  12.         private var t:Sprite = new Sprite();  
  13.         private var c:CrossHairs = new CrossHairs();  
  14.         [Embed(source = '../bin/123.jpg')]private var imge:Class;  
  15.         private var b:Bitmap  
  16.         public function Main():void {  
  17.               
  18.             b=new imge() as Bitmap  
  19.               
  20.             //t.graphics.beginFill(0xFF0000);  
  21.             //t.graphics.drawRect(0, 0, 80, 40);  
  22.             //t.graphics.endFill();  
  23.               
  24.             //t.buttonMode = true;  
  25.             //t.useHandCursor = true;  
  26.               
  27.             t.addChild(b);  
  28.             c.x = t.x = stage.stageWidth / 2- t.width/2;  
  29.             c.y = t.y = stage.stageHeight / 2 - t.height/2;  
  30.               
  31.               
  32.             t.addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  33.             t.addEventListener(MouseEvent.MOUSE_OUT, handleMOUSE);  
  34.             t.addEventListener(MouseEvent.MOUSE_WHEEL, handleMOUSE);  
  35.               
  36.             a = new DynamicRegistrationProxy(t);  
  37.               
  38.             addChild(t);  
  39.             addChild(c);  
  40.         }  
  41.           
  42.         private  function handleMOUSE(event:MouseEvent):void {  
  43.             switch(event.type) {  
  44.                 case MouseEvent.MOUSE_DOWN:  
  45.                     a.setRegistrationByStage(mouseX, mouseY);  
  46.                     //trace(t.globalToLocal(new Point(mouseX,0)).x,t.globalToLocal(new Point(0,mouseY)).y);  
  47.                     c.x = mouseX;  
  48.                     c.y = mouseY;  
  49.                     removeEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  50.                     addEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  51.                     addEventListener(MouseEvent.MOUSE_UP, handleMOUSE);  
  52.                 break;  
  53.                 case MouseEvent.MOUSE_MOVE:  
  54.                     //trace(t.mouseX - a.regX, t.mouseY - a.regY);  
  55.                     a.rotation2 += 5;  
  56.                     //a.scaleXByRefer += 5;  
  57.                 break;  
  58.                 case MouseEvent.MOUSE_UP:     
  59.                     addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  60.                     removeEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  61.                 break;  
  62.                 case MouseEvent.MOUSE_WHEEL:      
  63.                     removeEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  64.                     c.x = mouseX;  
  65.                     c.y = mouseY  
  66.                     a.setRegistrationByStage(mouseX, mouseY);  
  67.                     a.scaleX2 += event.delta * 0.1;  
  68.                     a.scaleY2 += event.delta * 0.1;  
  69.                 break;  
  70.                 default:  
  71.                     addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  72.                     removeEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  73.             }  
  74.         }  
  75.     }  
  76. }  
  77. import flash.display.Shape;  
  78.  
  79. class CrossHairs extends Shape {  
  80.     public function CrossHairs() {  
  81.         graphics.lineStyle(2,0xFF0000);  
  82.         graphics.moveTo( -10, 0);  
  83.         graphics.lineTo( 10, 0);  
  84.         graphics.moveTo( 0, -10);  
  85.         graphics.lineTo( 0, 10);  
  86.     }  

 

[原]动态注册点显示对象 AS3实现

2008-8-25 14:16:23 原创 抢沙发(0)

 相关类:

P.S:这个应用类我就改了下,现实中我是将这个类给做成了Proxy来代替现有的Display以及子类。

  1. package com.xintend.util {  
  2.     import flash.display.DisplayObject;  
  3.     import flash.display.Sprite;  
  4.     import flash.geom.Point;  
  5.       
  6.     /**  
  7.     * [AS3]DynamicRegistrationDisplayObject  
  8.     * 动态注册点   
  9.     * @author telds[kingfo] www.xintend.com    
  10.     *   
  11.     * 一级参考:  
  12.     *   作者: Darronschall        [ActionScript 2]  
  13.     *   站点: http://www.darronschall.com/weblog/archives/000054.cfm  
  14.     *   
  15.     * 二级参考:  
  16.     *   作者:     Robert Penner       [ActionScript 1]  
  17.     *   站点: www.robertpenner.com      
  18.       
  19.     */ 
  20.     public class DynamicRegistrationDisplayObject{  
  21.         public function get displayObject():DisplayObject { return _displayObject; }  
  22.           
  23.         public function get depth():Number { return _depth; }  
  24.         public function set depth(value:Number):void {  
  25.             _depth = value;  
  26.         }  
  27.           
  28.         public function get label():String { return _label; }         
  29.         public function set label(value:String):void {  
  30.             _label = value;  
  31.         }  
  32.           
  33.           
  34.         public function get stageRegX():Number { return _stageRegX; }         
  35.         public function get stageRegY():Number { return _stageRegY; }         
  36.           
  37.           
  38.         public function get centerX():Number { return _displayObject.x + _displayObject.width / 2; }          
  39.         public function set centerX(value:Number):void {  
  40.             _displayObject.x = value - _displayObject.width / 2;  
  41.         }  
  42.           
  43.           
  44.         public function get centerY():Number { return _displayObject.y + _displayObject.height / 2; }         
  45.         public function set centerY(value:Number):void {  
  46.             _displayObject.y = value - _displayObject.height / 2;  
  47.         }             
  48.           
  49.         public function get regX():Number { return _regX; }   
  50.         public function get regY():Number { return _regY; }       
  51.           
  52.           
  53.           
  54.         public function DynamicRegistrationDisplayObject():void {  
  55.             initializtion();  
  56.         }  
  57.           
  58.         public function setRegistrationByStage(stageX:Number, stageY:Number):void {  
  59.             _stageRegX = stageX;  
  60.             _stageRegY = stageY;  
  61.             var p:Point = _displayObject.globalToLocal(new Point(stageX,stageY));  
  62.             _regX = p.x;  
  63.             _regY = p.y;  
  64.         }  
  65.           
  66.         public function setRegistrationBySelf(selfX:Number, selfY:Number):void {  
  67.             var p:Point = _displayObject.localToGlobal(new Point(selfX,selfY));  
  68.             _stageRegX = p.x;  
  69.             _stageRegY = p.y;             
  70.             _regX = selfX;  
  71.             _regY = selfY;  
  72.         }  
  73.           
  74.         public function get rotationByRefer():Number { return _displayObject.rotation   }  
  75.         public function set rotationByRefer(value:Number):void {                                      
  76.             setPropRel("rotation", value);  
  77.         }  
  78.           
  79.         public function get scaleXByRefer():Number { return _displayObject.scaleX   }  
  80.         public function set scaleXByRefer(value:Number):void {                                    
  81.             setPropRel("scaleX", value);  
  82.         }  
  83.           
  84.         public function get scaleYByRefer():Number { return _displayObject.scaleY   }  
  85.         public function set scaleYByRefer(value:Number):void {                                    
  86.             setPropRel("scaleY", value);  
  87.         }  
  88.           
  89.           
  90.           
  91.           
  92.         public function initializtion(displayObject:DisplayObject=null):void {  
  93.             //throw new Error("AbstractTile is an Abstract Class");  
  94.             _displayObject = displayObject || new Sprite();  
  95.         }  
  96.           
  97.         protected function setPropRel(property:String, value:Number):void {  
  98.             var p:Point = _displayObject.parent.globalToLocal(_displayObject.localToGlobal(new Point(_regX, _regY)));  
  99.             _displayObject[property] = value;             
  100.             var pp:Point = _displayObject.parent.globalToLocal(_displayObject.localToGlobal(new Point(_regX, _regY)));        
  101.             _displayObject.x -= pp.x - p.x;  
  102.             _displayObject.y -= pp.y - p.y;  
  103.         }  
  104.           
  105.         private var _depth:Number;  
  106.         private var _label:String;  
  107.         private var _regX:Number = 0;  
  108.         private var _regY:Number = 0;  
  109.         private var _stageRegX:Number = 0;  
  110.         private var _stageRegY:Number = 0;  
  111.         private var  _displayObject:DisplayObject;  
  112.     }  
  113.       

 

应用代码:

 

  1. package {  
  2.     import com.xintend.util.DynamicRegistrationDisplayObject;  
  3.     import flash.display.Sprite;  
  4.     import flash.events.MouseEvent;  
  5.     import flash.geom.Point;  
  6.     /**  
  7.     * [AS3]DynamicRegistrationDisplayObjectTest  
  8.     * 动态注册点测试  
  9.     * @author telds[kingfo] www.xintend.com   
  10.     */ 
  11.     public class DynamicRegistrationDisplayObjectTest extends Sprite    {  
  12.           
  13.         private var a:DynamicRegistrationDisplayObject= new DynamicRegistrationDisplayObject();  
  14.         private var t:Sprite = new Sprite();  
  15.         private var c:CrossHairs = new CrossHairs();  
  16.           
  17.         public function DynamicRegistrationDisplayObjectTest():void {             
  18.             t.graphics.beginFill(0xFF0000);  
  19.             t.graphics.drawRect(0, 0, 80, 40);  
  20.             t.graphics.endFill();  
  21.             c.x = t.x = stage.stageWidth / 2- t.width/2;  
  22.             c.y = t.y = stage.stageHeight / 2 - t.height/2;  
  23.             t.buttonMode = true;  
  24.             t.useHandCursor = true;  
  25.               
  26.             t.addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  27.             t.addEventListener(MouseEvent.MOUSE_OUT, handleMOUSE);  
  28.               
  29.             a.initializtion(t);  
  30.               
  31.             addChild(t);  
  32.             addChild(c);  
  33.         }  
  34.           
  35.         private  function handleMOUSE(event:MouseEvent):void {  
  36.             switch(event.type) {  
  37.                 case MouseEvent.MOUSE_DOWN:  
  38.                     a.setRegistrationByStage(mouseX, mouseY);  
  39.                     trace(a.regX,a.regY);  
  40.                     trace(a.stageRegX, a.stageRegY);  
  41.                     trace(t.globalToLocal(new Point(mouseX,0)).x,t.globalToLocal(new Point(0,mouseY)).y);  
  42.                     c.x = mouseX;  
  43.                     c.y = mouseY  
  44.                     removeEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  45.                     addEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  46.                     addEventListener(MouseEvent.MOUSE_UP, handleMOUSE);  
  47.                 break;  
  48.                 case MouseEvent.MOUSE_MOVE:  
  49.                     trace(t.mouseX - a.regX, t.mouseY - a.regY);  
  50.                     a.rotationByRefer += 5;  
  51.                     //a.scaleXByRefer += 5;  
  52.                 break;  
  53.                 case MouseEvent.MOUSE_UP:     
  54.                     addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  55.                     removeEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  56.                 break;  
  57.                 default:  
  58.                     addEventListener(MouseEvent.MOUSE_DOWN, handleMOUSE);  
  59.                     removeEventListener(MouseEvent.MOUSE_MOVE, handleMOUSE);  
  60.             }  
  61.         }  
  62.     }  
  63. }  
  64. import flash.display.Shape;  
  65.  
  66. class CrossHairs extends Shape {  
  67.     public function CrossHairs() {  
  68.         graphics.lineStyle(1,0);  
  69.         graphics.moveTo( -10, 0);  
  70.         graphics.lineTo( 10, 0);  
  71.         graphics.moveTo( 0, -10);  
  72.         graphics.lineTo( 0, 10);  
  73.     }  

SWF: 

点击下载此文件

应邀撰陋文一篇

2008-7-15 0:00:57 原创 抢沙发(0)

应天地会AS3CN兄弟邀请,故特书此片文章,不为别的,只为祝福AS3CN杂志越办越好~~~

[原]开发模式小结---三种基本模式

2008-7-4 21:06:16 原创 抢沙发(0)

本人是作为一名adobe前端开发者,针对开发方面做的一些总结。涉及面可能比较狭隘,但本着“狭隘着、狭隘着、最终广泛着”的精神继续本人的超级打算。

这里所说的开发模式是开发前所需要思考的问题。

这里就不长篇大论了,依次罗列和解说如下:

三种开发模式:

A.从底至上

B.从上往下

C.各路铺开

 

A.从底至上是本人认为最为保守,和最为有效的开发模式,原因在于,你经过对即将展开的项目中,挑选出自己认为最喜欢和最希望能够实现的功能,包含了可行性测试和简单的方法实现。精髓就在于“足够简单的实现”。这就决定了,开发者可以立即着手开始自己最关心的部分实现。

B.由上往下,这可能会和设计模式结合在一起,因为从上而下,精髓在于“足够全面的考虑”,当然这里所说的足够全面是当前情况下必要考虑。而和设计模式结合的原因就是减少改动的开销,和已有资源的重复利用。一般来说这种模式需要依靠在这个领域有足够经验的人,至于一般的开发者如何获取如此的经验就不在本文中考虑了。

C.各路铺开这种模式之所以独立于前两者的原因在于,这个模式下不仅仅是一个人的模式。这意味着这个项目将是跨领域或是跨行业的,需要在展开前需要收集各种信息,通过验证的手段进行筛选然后全局应用。也许在很多情况下这种方式是必要的和极限的。本人是不太推荐这个模式,因为这意味着最大成本的投入。当然目前互联网商业上的项目应用倒是比较接近这个。

小结:

个人的兴趣项目可以考虑模式A,而想让自己成为架构师等级的则可以从B开始锻炼,而C则一般在互联网商业团队中已经类似,所以,这就需要有成熟的B专家,和优秀的A的成员们。

[原创故事]另一个世界_混沌之元_泰格斯

2008-7-3 23:56:21 原创 抢沙发(0)

开始之前:每个游戏之前都要有一个说的过去的故事,遂欲撰此系列虚构的故事,尝试性的写点东西。

-----------------------------------------------------------------------------------------------------------------------------

章1:混沌之元
节1:泰格斯

泰格斯一直不知道自己父母是谁,从小也没有人抚养自己,谁也不知道他的过去,自从泰格斯发现自己晕倒在沼泽旁,这就是他的首要的问题。

泰格斯也许失意了,这让他觉得是件不可思议的事,但事实如此。无论如何回忆自己的过去,最终始终都是空白。但回忆别的倒是可以立即找到答案。

“该死的,莫非我患了选择性失意?!!TMD,只有在小说里出现的事情竟然发生了!!”泰达斯懊恼道。

庆幸的是泰格斯知道自己的名字和住址,以及出生时间,因为他从自己的上衣袋里发现了一张卡片,准确的说是张印有某个标记的身份证,上面写着“世纪联邦政府公民身份证”字样。在姓名一栏内写着“泰格斯”,在住址一栏写着“湖枫境月州,黄昏湖49307号,锦座18楼601室”,而出生一栏则写着世纪元年0029.07.07。而在最后一栏有着行128位的数字以及对应的条形码,在卡片的背面,除了像正面的“世纪联邦政府”一样的标记外,还印有一个光芒四射的太阳标记,除了在一旁小字外没任何关于此标记的解释,那行小字写着“宗教派别”。

泰格斯冷静下来后,回忆起自己是个魔法师,但不幸的选择性失意让他无法回忆起这些技能是谁教他的。不过这些问题在这个时候并不是最重要的。

最重要的是解决当前的问题:自己绕这块大地行走了那么长时间,没有发现任何人的踪迹。四处都是古怪的绿色和深紫色的类苔藓的东西,而且在他们之上长出了浅棕色的枝干,而且如果停下来观察,可以发现他们生长速度非常快,像某种攀爬植物,沿着地形向前伸展,遇到同类的枝干,较大的枝干会立刻折断较小的枝干继续向前,而折断的较小枝干则会在断裂的地方流出深红色,浓稠而异味的液体,但很快就会愈合,长出比原先更小的枝干越过较触的枝干继续延伸。

这样的环境不止一次让泰格斯犯恶心,而且十分害怕,因为第一次见到这个状况的时候,泰格斯使用了燃烧之手的魔法,本想烧毁在他面前的这些恶心的东西,但没想到,在烧毁后,竟然从焦黑的枝干管中涌出了大量的白色球体,向他扑来,并粘住他的全身,虽然对拥有法术屏障的泰格斯来说并什么多大伤害,但这些急速聚集的白色小球以数以万计的数量向他堆叠过去。好在泰格斯使用了冰障术,冻住了向他扑来的白色小球,并使用了两次瞬闪术离开了那个地方。

 

(待续)

2/3, 18«123»