2012-03-25 17 views
9

के घूर्णन को बदलने के लिए टैग का उपयोग करके मैं < सेट> टैग का उपयोग करके आकार के घूर्णन कोण को सेट करने का प्रयास कर रहा हूं लेकिन मेरे जीवन के लिए मैं इसे समझ नहीं सकता। सही वाक्यविन्यास क्या है? <set> एसवीजी में

<set id="smallGearJump" 
     attributeName="transform" attributeType="XML" type="rotate" 
     to="110 100 100" begin="1s" dur="1.7s" /> 

संपादित करें: स्पष्टीकरण - मैं एक निर्धारित समय के लिए एक विशेष कोण के लिए यह निर्धारित करने के लिए, वहाँ यह चेतन नहीं कोशिश कर रहा हूँ। मैं इसे 0 रोटेशन से 110 तक (ऊपर इस उदाहरण में)

+0

यह * * काम है, लेकिन यह नहीं है चाहिए: '<सेट AttributeName = =" घुमाएँ (110 100 100) "को" परिणत "शुरू =" 1s "dur =" 1.7 एस "/> 'मुझे एक ही काम करने की ज़रूरत है लेकिन इसे समझ नहीं सकता है। – Tobia

उत्तर

1

यदि आप एक राज्य से दूसरे राज्य में कूदने के लिए एनीमेशन चाहते हैं तो calcMode = "discrete" निर्दिष्ट करें।उदाहरण के लिए इस तरह:

<animateTransform attributeName="transform" type="rotate" to="110 100 100" dur="1.7s" begin="1s" 
      calcMode="discrete" />  
+0

मुझे थोड़ी देर लग गई लेकिन मैं अंततः इस पर वापस आ गया। उत्तर के लिए चीयर्स। – Hyposaurus

+0

'attributeName =" transform "' की आवश्यकता हो सकती है – mems

+0

फिक्स्ड, धन्यवाद @mems –

2

आपको animateTransform तत्व animate की आवश्यकता नहीं है। आप अपनी आवश्यकताओं के आधार पर additive और fill गुणों को संशोधित करना चाह सकते हैं।

<animateTransform id="smallGearJump" 
       attributeName="transform" attributeType="XML" 
       type="rotate" to="110 100 100" dur="1.7s" begin="1s" 
       additive="replace" fill="freeze" /> 

W3C पर या MDN पर दस्तावेज देखें।

+0

एनिमेट ट्रांसफॉर्म को शून्य अवधि के साथ उपयोग नहीं किया जा सकता है, इसलिए सवाल में पूछे जाने पर यह एक अलग सेटिंग नहीं है। – Tobia

1

यह आपके प्रश्न के लिए सिर्फ एक काम है। पाया गया कि set का व्यवहार, जब आप इसे गलत विशेषता मान देते हैं, तो यह ऑनबेजिन ईवेंट को ट्रिगर करता है और तत्व के लिए कुछ भी नहीं करता है। तो, इसका उपयोग करके, मैंने "to" विशेषता के लिए गलत विशेषता मान दिए हैं। तो सेट कमांड 2s के बाद प्रारंभिक घटना को ट्रिगर करता है, लेकिन तत्व पर कोई परिवर्तन लागू नहीं होता है। फिर, ऑनबेजिन इवेंट हैंडलर के अंदर, मुझे लक्ष्य तत्व मिलता है जो इस मामले में आईडी c1 के साथ है। फिर मैं इसके लिए आवश्यक परिवर्तन लागू करता हूं। (केंद्र के बारे में 110 घुमाएं।)

इसके अलावा ऑनेंड 5s के बाद ट्रिगर किया गया है। इसके अंदर, मैं भरने विशेषता मान के लिए परीक्षण करता हूं, और यह तय करता हूं कि लागू परिवर्तन को वापस करना है या नहीं।

यह एक काम हो सकता है लेकिन, प्रारंभ मूल्य, अवधि मूल्य में कोई समझौता नहीं है।

इसके अलावा

<set attributeName="transform" to="200" ... /> तब्दील हो में एक्स dir सेट व्यवहार के साथ

<set attributeName="transform" to="200 100" ... /> एक्स dir में 200 और 100 y dir में सेट व्यवहार

साथ तब्दील हो लेकिन नहीं कर सकते घुमाने के लिए वाक्यविन्यास पाते हैं।

एक बेला यहाँ http://jsfiddle.net/AA2tT/

+0

@ हाइपोसॉरस बक्षीस के लिए धन्यवाद ... – rajkamal

+0

-1 प्रश्न ने जावास्क्रिप्ट समाधान के लिए नहीं पूछा था, लेकिन किसी भी एनीमेशन के बिना अचानक परिवर्तन संपत्ति को बदलने के लिए सही घोषणात्मक तरीके के लिए। – Tobia

+0

किसी को भी समस्या होने पर ध्यान देने योग्य है, कि कुछ क्रोम और ओपेरा संस्करणों में ऑनेंड और ऑनबीन ट्रिगर नहीं होते हैं। इस पर एक बग है। – Ian

0

मैं एक संतोषजनक जवाब नहीं मिल सका डाला जा सकता।

मैं अंत में इस तरह यह कोडित:

  • मूल तत्व सेट दो
  • के बिना एक <defs>
  • में दूर किया तत्व के दो <use>, अतिरिक्त रोटेशन के साथ एक, अन्य बनाना दृश्य या एनीमेशन के दौरान छिपे करने <use>, आवश्यकताओं के अनुसार

उदाहरण:

<defs> 
    <path id="example" d="..."/> 
</defs> 
<use xlink:href="#example" visibility="hidden"> 
    <set begin="0s" end="1s" attributeName="visibility" to="visible"/> 
</use> 
<use xlink:href="#example" visibility="hidden" transform="rotate(110 100 100)"> 
    <set begin="1s" end="3s" attributeName="visibility" to="visible"/> 
</use>