2009-06-11 3 views
5

का उपयोग कर एडोब एयर में एनीमेशन मेरे एआईआर एप्लिकेशन में, मैं jQuery का उपयोग करके एक HTML तत्व एनिमेट करना चाहता हूं। जब मैं वैश्विक HTMLLoader में एनीमेशन का प्रयास करता हूं, तो कोई समस्या नहीं है। हालांकि, मुझे 'माध्यमिक' HTMLLoader (यानी मूल दस्तावेज़ द्वारा खोला गया) में तत्वों को एनिमेट करने का प्रयास करते समय समस्या हो रही है।jQuery.animate

एनीमेशन चिकनी नहीं है - जब मैं माउस को ले जाता हूं तो यह केवल 'कदम' होता है। एनिमेटेड प्रॉपर्टी (उदा। top, left, आदि) अभी भी अपडेट की गई है - यह तब तक दिखाई नहीं दे रहा है जब तक कि माउस स्थानांतरित नहीं हो जाता है। तो अगर मैं माउस नहीं ले रहा हूं, तो एनीमेशन प्रारंभ और अंत स्थिति के बीच कोई भी संक्रमण देखे बिना पूरा करता है।

एनीमेशन का प्रकार महत्वपूर्ण प्रतीत नहीं होता है। मैं निम्नलिखित करने के लिए कोड को सरल बना दिया:

var loader; 

$(function() { 
    loader = new air.HTMLLoader(); 
    loader.addEventListener(air.Event.COMPLETE, start); 
    window.htmlLoader.stage.addChild(loader); 
    loader.load(new air.URLRequest('sandbox2.html')); 
}); 

function start() { 
    loader.width = loader.window.document.width; 
    loader.height = loader.window.document.height; 
    $('.task', loader.window.document).click(function() { 
     $(this).animate({ backgroundColor: '#c00' }, 1000); 
    }); 
} 

मैं बराबर एचटीएमएल दोनों Firefox और Safari में/जे एस लोड हो रहा है की कोशिश की, और यह ठीक था। मैं मैक ओएस एक्स 10.5 चला रहा हूँ।

कोई विचार? धन्यवाद!

+0

बस एक नोट, यदि आप jQuery (दस्तावेज़) .ready (फ़ंक्शन ($) {आपका कोड}) करते हैं; आपको उस डॉलर सहायक सहायक कार्य को बनाने की आवश्यकता नहीं है, क्योंकि पैरामीटर दस्तावेज़ में पास हो गया है। पहले से ही jQuery ऑब्जेक्ट स्वयं –

उत्तर

2

मुझे एक ही समस्या है। समस्या यह है कि jQuery उस अंतराल को सेट करता है जिसके साथ एनीमेशन को मुख्य विंडो पर अपडेट किया जाना चाहिए, न कि आपके द्वितीयक विंडो संदर्भ पर।

मैंने jQuery 1.3.2 पर small patch बनाया है जो मेरे लिए काम करता है।

+0

वाह - उत्कृष्ट। धन्यवाद पीटर - अच्छी तरह से निदान! – harto

5

एआईआर सफारी और क्रोम की तरह अधिक है। एआईआर वेबकिट का उपयोग करता है, और यह वेबकिट संस्करण में सफारी और क्रोम के पीछे थोड़ा सा है। क्या आप देख सकते हैं कि वे कैसे काम करते हैं?

मैंने एआईआर में jQuery का उपयोग किया है, लेकिन मुझे नहीं लगता कि मैंने एआईआर में एनिमेट विधि का उपयोग किया है।

इसके अलावा, यह संकुचित करने का प्रयास करें कि यह रंग के बारे में कुछ है (हालांकि मैं कल्पना नहीं कर सकता)। रंग की बजाय ऊंचाई की तरह कुछ कोशिश करें।

इसके अलावा, आपको नॉनफ्लिक्ट का उपयोग क्यों करना पड़ा? क्या आपके पास एक और लाइब्रेरी लोड है? मुझे ऐसा करने की याद नहीं है।

+0

है, मैं इसे सफारी में चला दूंगा और देखें कि क्या होता है। मैंने आपके अन्य बिंदुओं के बारे में अपना प्रश्न अपडेट किया। – harto

+0

या तो सफारी में कोई पासा नहीं है। एनिमेटेड संपत्ति या तो महत्वपूर्ण नहीं है ... – harto

+0

तो सफारी में एनिमेट चिकनी है? – Nosredna

1

अगर यह सफारी पर सही तरीके से काम करता है लेकिन एडोब एयर में नहीं, तो यह मुझे अपने सैंडबॉक्स (डिफ़ॉल्ट लेकिन एडोब एयर पर प्रतिबंधित क्षेत्र) के अंदर चल रहे अपने jquery ऐप के साथ एक सुरक्षा समस्या की तरह दिखता है। कृपया एक गैर-एप्लिकेशन सैंडबॉक्स बनाएं और यह देखने के लिए कि क्या यह एक सुरक्षा समस्या है, वहां अपना ऐप चलाएं। गैर-एप्लिकेशन सैंडबॉक्स बिल्कुल ब्राउज़र की तरह काम करना चाहिए। http://labs.adobe.com/wiki/index.php/AIR:HTML_Security_FAQ

एप्लिकेशन सुरक्षा सैंडबॉक्स में सामग्री के विपरीत, गैर-अनुप्रयोग सुरक्षा सैंडबॉक्स में जावास्क्रिप्ट सामग्री किसी भी समय गतिशील रूप से जेनरेट किए गए कोड को निष्पादित करने के लिए eval() फ़ंक्शन को कॉल कर सकती है। हालांकि, एक गैर-अनुप्रयोग सुरक्षा सैंडबॉक्स में जावास्क्रिप्ट के लिए प्रतिबंध हैं। लेकिन ये प्रतिबंध सामान्य ब्राउज़र प्रतिबंधों को दर्पण करते हैं।

एक आईफ्रेम का उपयोग करके एक गैर अनुप्रयोग सैंडबॉक्स आसानी से बनाया जा सकता है।