WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十一)主位式地图移动模式

 2009-07-04 07:07:23 来源:WEB开发网   
核心提示: private void AllMove() { if (Spirit.X <= WindowCenterX && Spirit.Y <= WindowCenterY) { //地图左上 //所有精灵以主角为参照相对移动 for (int i = 0; i < Carri

private void AllMove() {

if (Spirit.X <= WindowCenterX && Spirit.Y <= WindowCenterY) {

//地图左上

//所有精灵以主角为参照相对移动

for (int i = 0; i < Carrier.Children.Count; i++) {

if (Carrier.Children[i] is QXSpirit) {

//假如子控件为精灵类型,则获取之

QXSpirit spirit = Carrier.Children[i] as QXSpirit;

//设置精灵在游戏窗口中的显示位置

Canvas.SetLeft(spirit, spirit.X - spirit.CenterX);

            Canvas.SetTop(spirit, spirit.Y - spirit.CenterY);

//画家方法,使所有精灵之间的遮挡关系由近及远

Canvas.SetZIndex(spirit, Convert.ToInt32(spirit.Y);

} else if (Carrier.Children[i] is Image) {

                 //假如是地图/遮罩

Image Map = Carrier.Children[i] as Image;

Canvas.SetLeft(Map, 0);

Canvas.SetTop(Map, 0);

}

}

}

……

}

我们首先判断主角是否在左上的区域(Spirit.X <= WindowCenterX && Spirit.Y <= WindowCenterY),如果是,那么我们循环遍历画布中的所有子控件,假如某个控件是精灵类型(QXSpirit),那么我们捕获它。由于此时主角处于的是地图左上区域,按我们前面的分析,它在此区域内的显示位置就是它的坐标减去中心点值(CenterX,CenterY),因为精灵坐标是定位到脚底的,而窗口显示它的位置时是定位到精灵图片左上角点的。那么其他方向以次类推(源码中有这里就不再列罗列)。

做到这,有朋友忍不住要问了:

上一页  1 2 3 4 5 6 7  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接