⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singlecardview.as

📁 Flex3实现的掼蛋游戏
💻 AS
字号:
 /**
  * Project: 单张扑克牌 可视对象类
  * Author : dmh2002 
  * Blog: dmh2002.com
  * QQ:122054933 MSN:shangxinyu2002@msn.com 
  * Date : 2008.04.10 
  */    
package com.dmh2002.games.cardgame.cairngorm.view
{	
	import com.dmh2002.games.cardgame.cairngorm.vo.CardFaceVO;
	import com.dmh2002.games.cardgame.cairngorm.vo.CardSuitVO;
	import com.dmh2002.games.cardgame.classes.CardImageClasses;
	
	import flash.display.DisplayObject;
	
	import mx.core.IFlexDisplayObject;
	import mx.core.UIComponent;
	import mx.controls.Alert;
	
	import com.dmh2002.games.cardgame.cairngorm.model.CardGameModelLoactor;
	
	//自定义样式 扑克牌面图片
	[Style(name="cardImages", type="Class", inherit="no")]
	
	
	
	public class SingleCardView extends UIComponent
	{		           
        /** 定义属性 */
        
        private var  _model:CardGameModelLoactor = CardGameModelLoactor.getInstance();
        
        //扑克牌大小 常量
        private const cardWidth:uint  = _model.SingleCardSize_width			//130//171;
        private const cardHeight:uint = _model.SingleCardSize_height		//195//255; 
        
        //扑克牌值大小/花型 只读 仅在初始化时设定
        public var _cardFaceVO:CardFaceVO;
		public var _cardSuitVO:CardSuitVO;      
		
		//扑克 前景/背景 图片 私有 仅在初始化时设定
        private var _cardFGClass:Class;
        private var _cardBGClass:Class;
        
        //显示牌面还是显示牌背 默认显示牌背
        private var _isShowCard:Boolean
        
        //用于存放当前显示牌面的显示对象
        private var cardImageSkin:IFlexDisplayObject 
        
        public var UpDownState:Boolean = false
        public var _GetClassName:String = ""
        
		
		/** get/set 存储器 */
		
		//牌面值对象 3,4,5,6,7,8,9,j,q,k,a,2 只读(仅构造时设定)
		public function get cardValue():CardFaceVO
		{
			return this._cardFaceVO
		}
		
		//牌面花型对象 只读(仅构造时设定)		
		public function get cardSuit():CardSuitVO
		{
			return this._cardSuitVO;
		}
		
		//当前显示的是牌面还是牌背 属性 true为显示牌面 false显示牌背
		public function get isShowCard():Boolean
		{
			return this._isShowCard;
			
		}
		public function set isShowCard(value:Boolean):void
		{
			if ( isShowCard == value && getStyle("cardImage")!= undefined)
				return
			else
				if( value )
					this.setStyle("cardImage",this._cardFGClass);
				else
					this.setStyle("cardImage",this._cardBGClass);					
		}
		
		/** 构造函数 */
		public function SingleCardView(cardFGClass:Class):void
		{
			super();	
			
			//设置扑克大小
			this.width  = cardWidth;
			this.height = cardHeight;						
			
			//设置前景样式、牌值、花型
			this._cardFGClass = cardFGClass;
			this._cardBGClass = CardImageClasses.BGIMAGE_CLASS;
			
			//从ClassName中分析牌面信息并设置
			
			var _faceAndSuitName:FaceAndSuitName = getFaceAndSuitName(new _cardFGClass().name)
			this._GetClassName = _faceAndSuitName.suitName + "_" + _faceAndSuitName.faceName
			//设置牌面对象属性
			this._cardFaceVO = new CardFaceVO(_faceAndSuitName.faceName);
			
			//设置花型对象属性
			this._cardSuitVO = new CardSuitVO(_faceAndSuitName.suitName);
			
			//设置默认样式为显示牌背
			this.isShowCard = false;
		}		

		
        /**===================== 
		 *=======公开方法========= 
		 *======================
		 */
		  
        /** 设置样式方法 */
        override public function styleChanged(styleProp:String):void
        {
        	var allStyles:Boolean = !styleProp || styleProp == "styleName";
        
        	super.styleChanged(styleProp);
        	//
        	if (allStyles || styleProp == "cardImage")
        	{
            	var cardPicClass:Class = getStyle("cardImage");
                                
                if (cardPicClass)
                {        
                    if(cardImageSkin)
                    {
                		removeChild(DisplayObject(cardImageSkin));
               			cardImageSkin = null;
            		}        
                    cardImageSkin = new cardPicClass()
                    cardImageSkin.width = cardWidth;
                    cardImageSkin.height = cardHeight;
                    this.addChildAt(DisplayObject(cardImageSkin), 0);                 
                }
       		}
       		//     		
        }
        
        /**===================== 
		 *=======私有方法========= 
		 *======================
		 */
		 
		 /** 解析_cardFGClass.name 方法 
		   * 每一个扑克牌面Class的名称都有
		   * CardImageClasses_SPADES_K5
           * CardImageClasses_CLUBS_10_9
           * CardImageClasses 字符串 + CLUBS(花型字符串)+ 10 (牌面值字符串组成)
           * 可以用以设置_cardFace属性以及_cardSuit属性
           * 参数 cardFGClassName:String
           * 返回 faceAndSuitName 牌面名以及花型名对象
		   * */
		 private function getFaceAndSuitName(cardFGClassName:String):FaceAndSuitName
		 {
		 	if (cardFGClassName == null)
		 	{
		 		return null;
		 	}	
		 	else
		 	{
		 		// Alert.show("--this:" + cardFGClassName, "titlec:" + cardFGClassName, Alert.YES | Alert.NO); 
		 		var _tmpArray:Array=cardFGClassName.split("_");
		 		
		 		var _tmpFaceAndSuitName:FaceAndSuitName=new FaceAndSuitName();
		 		
		 		//获取牌面值的第一个字符 因为j,q,k,a获取时后面会有一个未知含义的数字
		 		var _fristString:String=_tmpArray[2].toString().charAt(0)
		 		
		 		if( _fristString == "J" || _fristString == "Q" || _fristString == "K" || _fristString == "A"  || _fristString == "W"  || _fristString == "V" ) 
		 			_tmpFaceAndSuitName.faceName=_fristString;
		 		else
		 			_tmpFaceAndSuitName.faceName=_tmpArray[2].toString();
		 		
		 		_tmpFaceAndSuitName.suitName=_tmpArray[1].toString().toLowerCase()
		 		
		 		return _tmpFaceAndSuitName		 		
		 	}		 		
		 }
        //
	}
}

class FaceAndSuitName{
	public var faceName:String
	public var suitName:String
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -