2009-12-28 13 views
6

द्वारा लागू किया जा रहा बदलने मैं कैसे निर्धारित कर सकते हैं वर्तमान कि एक HTML5 कैनवास द्वारा लागू किया जा रहा है बदलना।वर्तमान कैनवास

ऐसा लगता है कि यह केवल रूपांतरण के साथ "परिणत", "setTransform" निपटने के लिए दो तरीकों का समर्थन करता है, लेकिन मैं रूपांतरण लागू करने के परिणाम की खोज नहीं कर पा रहे।

उन सब को अपने आप पर नज़र रखने और डुप्लिकेट मैट्रिक्स गणित है कि यह मूल रूप से कर रही होगी की कमी, मैं कैसे पता लगा सकते हैं वर्तमान को बदलने? आप setTransform समारोह का उपयोग करते हैं

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#transformations

, उस समय के वर्तमान को बदलने मैट्रिक्स पहचान मैट्रिक्स के लिए सेट है तो इसे इस्तेमाल करता है क्या स्थापित किया गया था:

उत्तर

2

आप कार्यों कि परिवर्तन को प्रभावित करने के लिए यहाँ देख सकते हैं।

उस बिंदु पर आप वर्तमान मैट्रिक्स को बदलने की है।

अब, यदि आप इसे रीसेट करने जा रहे हैं, तो अन्य रूपांतरण विधियों को कॉल करना शुरू करें, अगर आपको यह जानने की ज़रूरत है कि यह क्या है, तो परिवर्तन मैट्रिक्स की गणना करने के लिए गणित करना आसान है, तो बस संचालन करें , अपने स्वयं के परिवर्तन कार्यों का उपयोग करके, आप ट्रांसफॉर्म सेट कर सकते हैं, क्योंकि आपने इसकी गणना की है।

आप ऐसा नहीं कर सकते हैं, तो आप वर्तमान में भाग्य से बाहर हैं, लेकिन इस पोस्ट भी एक ही समस्या है, तो आप एक नया कार्य, getTransform जुड़ते याचिका कर सकते हैं।

http://forums.whatwg.org/viewtopic.php?t=4164

+0

धन्यवाद। यह वही है जो मैं कर रहा हूं, बस यह पाया कि वे उन्हें मूल रूप से कर रहे हैं, और मैं संचालन कर रहा हूं बस कुछ भी नहीं कर रहा हूं। –

1

परिणत कैसे वर्तमान पाने के लिए समाधान नहीं एक है, यह एक उपयोगी तथ्य यह है कि हो सकता है संदर्भों एक बचाने में शामिल हैं() और एक बहाल() समारोह है कि पुश करने के लिए इस्तेमाल किया जा सकता और वर्तमान संदर्भ मैट्रिक्स सहित पॉप संदर्भ स्थिति।

(कम से कम यह एक ढेर में प्रयोग लागू करने के लिए उन है, जो इसी तरह मेरे लिए, क्रम में getTransform देख रहे थे लाभ हो सकता है ...)

+0

आईओएम पर कोरएनीमेशन/क्वार्ट्ज में मैट्रिक्स के साथ आईएमई, यह इस समस्या का पारंपरिक समाधान है; _actual_ परिवर्तन क्या है, बस सहेजें, बदलें, अपना काम करें, और पुनर्स्थापित करें के बारे में चिंता न करें। बाकी के ढेर को खुद का ख्याल रखना चाहिए। –

3

फायरफॉक्स के कैनवस 2D संदर्भों है (गैर मानक) mozCurrentTransform और mozCurrentTransformInverse गुण।

WHATWG अब currentTransform और currentTransformInverse गुण (पूर्व भी लिखने योग्य किया जा रहा है) को परिभाषित किया है।

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#transformations

हालांकि इन शायद सार्वभौमिक अभी तक कुछ समय के लिए ब्राउज़रों में लागू नहीं किया जाएगा, इसलिए यदि आप पोर्टेबिलिटी चाहते आप मैन्युअल रूप से मैट्रिक्स पर नज़र रखने के रूप में में वापस आने का होगा: यहाँ कल्पना के प्रासंगिक हिस्सा है @ डेव और @ जेम्स कहते हैं।

हर आदमी और उसके कुत्ते इस तरह के एक कैनवास-परिणत-मैट्रिक्स-ट्रैकर लिखा है लगता है। मैंने बस @ डेव लॉरेंस की एक नजर डाली; मुझे लगता है कि मेरा कुछ तरीकों से बेहतर है, भले ही मुझे यकीन है कि यह अन्य तरीकों से भी कम है।

  • मेरा उपयोगकर्ता जे एस कोड में कोई परिवर्तन की आवश्यकता नहीं है - यह कैनवास और संदर्भ प्रोटोटाइप को संशोधित करता है, तो आप सिर्फ एक स्क्रिप्ट टैग को जोड़ने के लिए और आप के लिए तैयार हैं।
  • यह वर्तमान ट्रान्सफॉर्म संपत्ति की सेटिंग को रोकता है।
  • यह केवल इतना करने के लिए प्रयास करता है कि उसे क्या करना है।

यह नवीनतम क्रोम और फ़ायरफ़ॉक्स में काम करता है, लेकिन मैंने अभी तक आईई में इसका परीक्षण नहीं किया है।

मैं एक jsfiddle में मेरा शब्दों में कहें, एक साधारण प्रदर्शन के साथ:

code, code, wonderful code 

मैं: http://jsfiddle.net/XmYqL/1/

यहाँ stackoverflow शांत करने के लिए तो यह मुझे jsfiddle को (??) लिंक की सुविधा देता है एक कोड खंड है अंत में GitHub करने के लिए अपने polyfill अपलोड करने के लिए चारों ओर हो गया है:

https://github.com/supermattydomain/canvas.currentTransform.js

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