2012-09-06 12 views
9

मैं सी # और एक्सएएमएल में एक साधारण विंडोज स्टोर गेम बनाने की कोशिश कर रहा हूं, जिसमें हेक्सागोनल टाइल्स चल रहा है। यह ज्यादातर मुझे सी # और एक्सएएमएल सीखने में मदद करने के लिए है क्योंकि मैंने पहले कभी ग्राफिक्स या यूआई कोडिंग के साथ काम नहीं किया है।मैं सी #/एक्सएएमएल में एक स्टोरीबोर्ड में एकाधिक एनिमेशन कैसे कर सकता हूं?

मैं एक विधि है कि लक्ष्य निर्देशांक के लिए एक एकल हेक्स स्थानांतरित कर सकते हैं मिल गया है, लेकिन इसे देख अब मुझे पता है कि यह एक साथ कई चालें करने के लिए असंभव है, जो बिल्कुल जरूरी है।

मुझे लगता है कि वहाँ कुछ मेरे दृष्टिकोण में मौलिक रूप से बंद हो गया है, एक से अधिक ऑब्जेक्ट, एक भी कैनवास के बारे में आगे बढ़ एक असामान्य बात नहीं हो सकता है कर सकते हैं यह? मैं ज्यादातर उम्मीद में यह पूछ रहा हूं कि कोई यह बताएगा कि मैं कहां गलत हुआ था।

//moves the hex hexName to coordinates x, y, over a specified duration. 
    public void slideHex(int x, int y, string hexName, Duration duration) 
    { 

     GameStoryboard.Stop(); 

     Polygon hex = GameCanvas.FindName(hexName) as Polygon; 



     TranslateTransform slideTransform = new TranslateTransform(); 
     slideTransform.X = hex.RenderTransformOrigin.X; 
     slideTransform.Y = hex.RenderTransformOrigin.Y; 

     hex.RenderTransform = slideTransform; 

     DoubleAnimation animX = new DoubleAnimation(); 
     DoubleAnimation animY = new DoubleAnimation(); 

     animX.Duration = duration; 
     animY.Duration = duration; 

     GameStoryboard.Duration = duration; 
     GameStoryboard.Children.Add(animX); 
     GameStoryboard.Children.Add(animY); 

     Storyboard.SetTarget(animX, slideTransform); 
     Storyboard.SetTarget(animY, slideTransform); 

     Storyboard.SetTargetProperty(animX, "X"); 
     Storyboard.SetTargetProperty(animY, "Y"); 

     animX.To = x; 
     animY.To = y; 

     GameStoryboard.Begin(); 

    } 

उत्तर

4

स्टोरीबोर्ड कई एनिमेशन शामिल कर सकते हैं, और प्रत्येक एनीमेशन एक अलग यूआई तत्व लक्षित कर सकते हैं। यहाँ एक स्टोरीबोर्ड का एक उदाहरण है जो "दालों" तीन अलग-अलग नियंत्रण की सीमा रंग:

<Storyboard x:Name="pulseAnimation" AutoReverse="True"> 
    <ColorAnimation x:Name="animateLatitudeTextBoxBorderColour" Storyboard.TargetName="textBoxLatitude" From="{StaticResource PhoneTextBoxColor}" To="Green" Storyboard.TargetProperty="(TextBox.BorderBrush).(SolidColorBrush.Color)" Duration="0:0:0.4" /> 
    <ColorAnimation x:Name="animateLongitudeTextBoxBorderColour" Storyboard.TargetName="textBoxLongitude" From="{StaticResource PhoneTextBoxColor}" To="Green" Storyboard.TargetProperty="(TextBox.BorderBrush).(SolidColorBrush.Color)" Duration="0:0:0.4" /> 
    <ColorAnimation x:Name="animateHyperlinkTextColour" Storyboard.TargetName="hyperlinkButtonCurrentLocation" From="{StaticResource PhoneForegroundColor}" To="Green" Storyboard.TargetProperty="(HyperlinkButton.Foreground).(SolidColorBrush.Color)" Duration="0:0:0.4" /> 
</Storyboard> 

आपका कोड ठीक लग रहा है - आप पहले से ही slideTransform के कई गुण एनिमेट रहे हैं, और एक एनीमेशन का लक्ष्य के बाद से एक संपत्ति है स्टोरीबोर्ड की बजाय एनीमेशन का, ऐसा कोई कारण नहीं है कि आप animX या animY को एक अलग ऑब्जेक्ट पर पूरी तरह से फिर से लक्षित नहीं कर सके।

0

आप एक से अधिक स्टोरीबोर्ड बना सकते हैं और आदेश एक साथ कई चेतन वस्तुओं में समवर्ती उन्हें निष्पादित कर सकते हैं। निम्न आलेख जो एक करने के लिए सूची में एक से अधिक आइटम एनिमेट होने में उदाहरण देखें:

http://www.codeproject.com/Articles/428088/A-Gesture-Driven-Windows-Phone-To-Do-List#swipe

संबंधित मुद्दे

 संबंधित मुद्दे