मैं कुछ अनुप्रयोगों के आधार के रूप में एक छोटी पुस्तकालय विकसित कर रहा हूं। जैसा कि मैंने के बारे में scenegraph (2 डी) बनाने के लिए मैं सोच रहा हूँ जो निम्न तरीकों में से, प्रदर्शन, रख-रखाव के मद्देनजर तहत अधिक आशाजनक का उपयोग करने के लिए आसान लग रहा है कर रहा हूँ आदिकैनवास मैनिपुलेशन बनाम तत्व मैनिपुलेशन
- मैं हर drawable तत्व एक मैट्रिक्स जहां दे सकता है मैं अनुवाद, रोटेशन और अधिक प्रदर्शन करता हूं।
- मैं तत्वों के बजाय कैनवास पर सब कुछ कर सकता था।
पहला समाधान एक नुकसान हैं:
private float get(int index) {
final float[] values = new float[9];
getValues(values);
return values[index];
}
public float getX() {
return get(Matrix.MTRANS_X);
}
public float getY() {
return get(Matrix.MTRANS_Y);
}
: हलकों, जहां मैं ड्रा कॉल में एक मैट्रिक्स पारित नहीं हो सकता की तरह आदिम तत्व के लिए, मैं इस तरह मैट्रिक्स से अनुवादित मूल्यों में प्रवेश करना होगा
तो प्रत्येक ड्रॉ कॉल पर मैं प्रत्येक गेटर कॉल के लिए एक फ्लोट सरणी बनाता हूं (get get() के लिए एक, getY() के लिए एक)। यह मानते हुए कि मेरे पास स्क्रीन पर बहुत से तत्व हैं, इससे स्मृति और प्रदर्शन प्रभाव हो सकता है।
दूसरे दृष्टिकोण में "नकारात्मक" सोच का नुकसान है। अगर मैं 100/100 बिंदु पर एक तत्व तैयार करना चाहता हूं तो मुझे कैनवास को -100/-100 में अनुवाद करना होगा क्योंकि मैं 0/0 पर आकर्षित करता हूं। यदि मैं उसके बाद कैनवास को पुनर्स्थापित करता हूं, तो परिणाम वांछित 100/100 पर खींचा जाएगा। मुझे यकीन नहीं है कि क्या इस नकारात्मक सोच के परिणामस्वरूप कोड रखरखाव पर भारी असर पड़ेगा और समझ में कमी आएगी (कभी भी किसी चीज़ को अस्वीकार करने से भूलकर बग शुरू करने के बारे में सोचना शुरू नहीं हुआ ...)।
क्या किसी के पास कोई सुझाव है जिसे किस तरह से प्राथमिकता दी जानी चाहिए?
मैंने अपना शोध परिणाम पोस्ट किया। मैं वास्तव में आपके उत्तर से कुछ भी नया नहीं प्राप्त कर सका लेकिन मैं आपके प्रयास के लिए आपको उकसाता हूं। – WarrenFaith