मैं जावास्क्रिप्ट प्रोग्रामिंग के लिए नया हूं और मुझे विरासत के साथ एक दुःस्वप्न का सामना करना पड़ रहा है। मैं एपसेलरेटर टाइटेनियम के लिए कुछ कोड लिख रहा हूं और मेरे पास स्लाईड 2 डी नामक बेस क्लास है मैं से प्राप्त करना चाहता हूं।प्रोटोटाइप का उपयोग करते समय जावास्क्रिप्ट विरासत समस्या - उदाहरण ओवरराइट किए गए :(
इसलिए मैंने स्लाइड 2 डी के प्रोटोटाइप में कुछ फ़ंक्शन लगाए हैं। इन्हें आम तौर पर ओवरराइट नहीं किया जा रहा है, लेकिन स्लाइड 2 डी से प्राप्त कक्षाओं से कहा जाएगा। इन कार्यों को अन्य भागों से भी बुलाया जाएगा कार्यक्रम। टाइटेनियम में एनीमेशन का प्रबंधन करने के लिए विभिन्न इवेंटहालर भी इस्तेमाल किए जाते हैं।
यदि मैं कुछ कॉलिंग कोड (नए का उपयोग करके) में इन स्लाइडों में से कुछ बना देता हूं
var s = new Slide2D('slide1', 'background1.png', etc......
var t = new Slide2D('slide2', 'background2.png', etc......
मेरे सभी प्रोटोटाइप विधियां आखिरी स्लाइड 2 डी को इंगित करती हैं, भले ही मैं एस या टी का उपयोग करता हूं। तो 'स्लाइड 2' हमेशा प्रदर्शित किया जाएगा, भले ही मैं एस चर का उपयोग कर रहा हूं।
यह मुझे पागल कर रहा है - किसी भी मदद की सराहना की जाएगी।
कोड की लंबाई के लिए क्षमा करें, लेकिन यहाँ यह है:
function Slide2D(name, backgroundImage, transform, inAnimation, outAnimation)
{
Titanium.API.info('Slide2D - Constructor - ' + name);
var _self = this;
var _name = name;
var _backgroundImage = backgroundImage;
var _startingTransform = transform;
var _slideView = Titanium.UI.createView({
backgroundImage: _backgroundImage,
transform: transform
});
var _animateInAnimation = Titanium.UI.createAnimation();
_animateInAnimation.transform = Titanium.UI.create2DMatrix().translate(0,0);
_animateInAnimation.duration = 750;
var _animateOutAnimation = Titanium.UI.createAnimation();
_animateOutAnimation.transform = Titanium.UI.create2DMatrix().translate(-1024,0);
_animateOutAnimation.duration = 750;
var onAnimateInStart = function()
{
Titanium.API.info('Slide2D.onAnimateInStart');
Titanium.App.fireEvent('animateInStart', {slideName: _name});
_animateInAnimation.removeEventListener('start', onAnimateInStart);
};
var onAnimateOutStart = function()
{
Titanium.API.info('Slide2D.onAnimateOutStart');
Titanium.App.fireEvent('animateOutStart', {slideName: _name});
_animateInAnimation.removeEventListener('start', onAnimateOutStart);
};
var onAnimateInComplete = function()
{
Titanium.API.info('Slide2D.onAnimateInComplete');
Titanium.App.fireEvent('animateInComplete', {slideName: _name});
_animateInAnimation.removeEventListener('complete', onAnimateInComplete);
};
var onAnimateOutComplete = function()
{
Titanium.API.info('Slide2D.onAnimateOutComplete');
Titanium.App.fireEvent('animateOutComplete', {slideName: _name});
_animateOutAnimation.removeEventListener('complete', onAnimateOutComplete);
};
_animateInAnimation.addEventListener('start', onAnimateInStart);
_animateOutAnimation.addEventListener('start', onAnimateOutStart);
_animateInAnimation.addEventListener('complete',onAnimateInComplete);
_animateOutAnimation.addEventListener('complete', onAnimateOutComplete);
Slide2D.prototype.animateIn = function(){
Titanium.API.info('Slide2D.prototype.animateIn - ' + _name);
_slideView.animate(_animateInAnimation);
};
Slide2D.prototype.animateOut = function(){
Titanium.API.info('Slide2D.prototype.animateOut');
_slideView.animate(_animateOutAnimation);
};
Slide2D.prototype.getName = function()
{
return _name;
};
Slide2D.prototype.getView = function(){
Titanium.API.info('Slide2D.prototype.getView');
return _slideView;
};
Slide2D.prototype.getStartingTransform = function(){
return _startingTransform;
};
};
संपादित करें आपके शीघ्र उत्तर के लिए बहुत बहुत
धन्यवाद। मैंने आपके द्वारा सुझाए गए परिवर्तन किए हैं और इसने उस विशेष समस्या का समाधान किया है।
हालांकि, एक नया मुद्दा पेश किया गया है।
मुझे एक व्युत्पन्न क्लास - ExtendedSlide2D से Slide2D.prototype.getView को कॉल करने की आवश्यकता है।
हालांकि, अब मैं निम्नलिखित त्रुटि मिलती है:
Result of expression 'Slide2D.prototype.getView()' [undefined] is not an object
at ExtendedSlide2D.js at line .......
यह वह जगह है जहाँ मैं आधार वर्ग का दृष्टिकोण वस्तु के लिए बटन जोड़ें।
मुझे यकीन है कि यह त्रुटि सिर्फ भाषा के साथ मेरे अनुभवहीनता के लिए नीचे आती है, लेकिन, एक बार फिर, किसी भी मदद की सराहना की जाएगी।
Titanium.include('Slide2D.js');
function ExtendedSlide2D(name, backgroundImage, transform, inAnimation, outAnimation)
{
Titanium.API.info('ExtendedSlide2D - Constructor');
this.base = new Slide2D(name,
backgroundImage,
transform,
inAnimation,
outAnimation);
ExtendedSlide2D.prototype.constructor = ExtendedSlide2D;
var button = Titanium.UI.createButton({title: 'AnimateOut',
height: 40,
width: 200,
top: 50
});
button.addEventListener('click', function()
{
Slide2D.prototype.animateOut();
});
Slide2D.prototype.getView().add(button);
}
ExtendedSlide2D.prototype = new Slide2D();
मैंने आपके प्रश्न के साथ अपना जवाब विलय कर लिया है और आपके खाते को डी-डुप्लिकेट कर दिया है।कृपया अपने खाते के साथ ओपनआईडी को जोड़ने या पंजीकरण करने पर विचार करें। –