📄 singlecardview.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 + -