इसलिए मैं जानना चाहता हूं कि विभिन्न स्क्रीन आकारों पर एक (जो पूर्णस्क्रीन में होगा) के साथ कैसे काम करना है।
यह एक आम समस्या है जिसमें एक बहुत ही आसान संकल्प है। अक्सर यह हार्ड कैनवास निर्देशांक को अलग करके किया जाता है जिसे कभी-कभी "मॉडल" निर्देशांक कहा जाता है।
यह वास्तव में इस बात पर निर्भर करता है कि आपका कोड कैसे व्यवस्थित किया गया है, लेकिन मुझे लगता है कि गेम में दुनिया की कुछ ऊंचाई और चौड़ाई है जो अधिकतर या सभी स्क्रीन लेती है। आपके द्वारा लक्षित स्क्रीन के दो पहलू अनुपात 1.5 और 1.666 हैं, इसलिए आप छोटे से
को पूरा करना चाहते हैं तो आप वास्तव में "मॉडल" निर्देशांक के एक सेट में अपना गेम करना चाहते हैं स्क्रीन या कैनवास आकार पर कोई असर नहीं है। चूंकि आप केवल दो स्क्रीन आकारों को लक्षित कर रहे हैं, इसलिए आपके मॉडल निर्देशांक शायद 960x640 हो सकते हैं क्योंकि यह दो पहलू अनुपातों में से छोटा है। यह होना जरूरी नहीं है। इसके बजाय आपके मॉडल निर्देशांक के लिए यह 100x50 हो सकता है। लेकिन यह उदाहरण हम 960x640 का उपयोग हमारे मॉडल निर्देशांक के रूप में करेंगे।
आंतरिक रूप से, आप कभी भी इन मॉडल निर्देशांक के अलावा कुछ भी उपयोग नहीं करते हैं। अपना गेम बनाते समय आपने कभी भी किसी भी अन्य निर्देशांक में कभी नहीं सोचा।
जब स्क्रीन का आकार 960x640 है तो आपको 1: 1 मैपिंग के बाद से कुछ भी बदलना नहीं होगा, जो सुविधाजनक है।
तब जब स्क्रीन आकार वास्तव में 800x480 है, जब स्क्रीन पर आकर्षित करने का समय आता है, तो आप सभी मॉडल निर्देशांक (3/4) का अनुवाद करना चाहेंगे, इसलिए गेम बनाया जाएगा और आंतरिक रूप से उपयोग किया जाएगा 960x480, लेकिन यह (720x480) के क्षेत्र में खींचा जाएगा। आप मॉडल निर्देशांक में स्क्रीन निर्देशांक को चालू करने के लिए कोई माउस या स्पर्श इनपुट भी लेना चाहते हैं और इसे (4/3) से गुणा करना चाहते हैं।
यह अनुवाद सब कुछ खींचने से पहले ctx.scale(3/4, 3/4)
पर कॉल करना जितना आसान हो सकता है।
तो दोनों प्लेटफार्मों में कोड होगा जो सभी को यह मानते हुए लिखा गया है कि गेम 960x640 का आकार है। मॉडल निर्देशांक बनने का एकमात्र समय स्क्रीन समन्वय बनता है जब कैनवास (जो एक अलग आकार होता है) को चित्रित करता है और कैनवास माउस/टच निर्देशांक को मॉडल कॉर्ड में परिवर्तित करता है।
यदि यह आपको भ्रमित लगता है तो मैं कोशिश कर सकता हूं और नमूना बना सकता हूं।
स्रोत
2011-12-24 19:23:46
ctx.scale काम करता है लेकिन कुछ धुंधले (यहां तक कि उसके आकार को) बिटमैप बना देता है। इसके लिए समाधान प्रत्येक संकल्प (रेंज) के लिए छवियों के विभिन्न सेट होना चाहिए, है ना? – Ixx
यह सब स्पष्ट स्केलिंग क्यों? अपने "मॉडल" आकार को सेट करने के लिए HTML में चौड़ाई/ऊंचाई का उपयोग करें, और उन निर्देशांकों का उपयोग करें जो हर जगह यूएनएससीलेड हैं। फिर स्क्रीन से मेल खाने के