WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①

 2009-06-22 07:08:36 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劖顐煎☉妯锋瀻闁归偊鍓涘▔姘舵⒑閸涘⿴娈旀繛灞傚妼閳绘捇骞嬪┑鎰濡炪倖姊婚崢褏鎲撮敓锟�
核心提示: 大致原理有了,如何通过代码来具体实现呢? 这里我提供两种方法: 第一种方法为通过载体来实现地图移动,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①(2),具体为首先向游戏窗体中添加8个完全透明的滚动介质(就好比图中那8块区

大致原理有了,如何通过代码来具体实现呢?

  这里我提供两种方法:

  第一种方法为通过载体来实现地图移动。具体为首先向游戏窗体中添加8个完全透明的滚动介质(就好比图中那8块区域,其中4个蓝的,4个棕的)分别布局在地图边缘的8个位置上(它们相对于游戏窗体来说永远是不动的),然后在界面线程中时时判断鼠标是否悬停在它们中的某个上从而进行相应的地图移动。

这里我以正下方的滚动介质为例,这样来创建它:

        int scrollspeed = 5; //定义滚动速度
        Rectangle roller = new Rectangle(); //创建滚动介质
        private void InitRoller() {
            roller.Width = 800;
            roller.Height = 20;
            roller.Opacity = 0.3;
            roller.Fill = new SolidColorBrush(Colors.Blue);
            Carrier.Children.Add(roller);
            Canvas.SetZIndex(roller, 10001);
            Canvas.SetTop(roller, 490);
        }

这里为了演示需要,我将它的透明度暂且设置为0.3而不是0,目的是为方便大家可以看到它。接下来我们就需要在CompositionTarget的Timer_Tick事件中时时判断鼠标是否在它上面:       

private void Timer_Tick(object sender, EventArgs e) {
            //时时判断如果鼠标停留在了该滚动介质上,则地图相应滚动
            if (roller.IsMouseOver) {
                Canvas.SetTop(Map, Canvas.GetTop(Map) - scrollspeed);
            }
   }

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

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