क्या इन ऑब्जेक्ट्स को नियंत्रित करने के लिए ऑब्जर्वर या प्रकाशक डिज़ाइन पैटर्न का उपयोग करना संभव है?
ऐसा लगता है कि आप कैमरे को नियंत्रण में जोड़ रहे हैं। आप एक ऑब्जेक्ट बना सकते हैं जिसमें एक ही नियंत्रण इंटरफ़ेस हो, लेकिन जब आप ऑब्जेक्ट को कमांड पास करते हैं, तो यह सब्स्क्राइब किए गए या पंजीकृत कैमरों में से एक ही कमांड को दोहराता है।
/* छद्म कोड: ES6 */
class MasterControl {
constructor(){
this.camera_bindings = [];
}
control_action1(){
for(var camera of this.camera_bindings){
camera.control_action1();
}
}
control_action2(arg1, arg2){
for(var camera of this.camera_bindings){
camera.control_action2(arg1, arg2);
}
}
bindCamera(camera){
if(this.camera_bindings.indexOf(camera) === -1){
this.camera_bindings.push(camera);
}
}
}
var master = new MasterControl();
master.bindCamera(camera1);
master.bindCamera(camera2);
master.bindCamera(camera3);
let STEP_X = -5;
let STEP_Y = 10;
//the following command will send the command to all three cameras
master.control_action2(STEP_X, STEP_Y);
यह बाध्यकारी है स्वयं नहीं बल्कि देशी Three.js सुविधाओं का उपयोग करने से बनाया है, लेकिन इसे लागू करने के लिए आसान है और जल्दी से आप कार्यात्मक मिल सकती है।
नोट: मैंने अपने psuedocode es6 में लिखा है, क्योंकि यह सरल और संवाद करने में आसान है। आप इसे es5 या पुराने में लिख सकते हैं, लेकिन आपको क्लास परिभाषा को कार्यात्मक ऑब्जेक्ट परिभाषाओं की एक श्रृंखला में बदलना चाहिए जो मास्टर ऑब्जेक्ट और इसकी कार्यक्षमता बनाता है।
स्रोत
2017-02-10 16:25:26
ऐसा लगता है कि यहां और अधिक चल रहा है? क्या आपको अलग-अलग कैमरे को नियंत्रित करने की ज़रूरत है, या आप सिर्फ एक को दूसरे का पालन करना चाहते हैं, लेकिन किसी भी समय केवल "मास्टर" होने के साथ? – pailhead