मैं flash.net.FileReference
कक्षा का स्रोत पढ़ना चाहता हूं। क्या यह संभव है? मुझे स्रोत फाइल कहां मिल सकती है, क्या वे एडोब फ्लैश या फ्लैश बिल्डर के साथ आते हैं?क्या कोर फ्लैश क्लास फ़ाइलों के स्रोतों को पढ़ना संभव है (और शायद बदल सकता है)?
उत्तर
फ्लैश पैकेज फ़ाइलों को पढ़ने के लिए, आप playerglobal.swc पा सकते हैं - nameglobal.zip में नाम बदलें और पैकेज को अनजिप करें। फिर, library.swf फ़ाइल को डीकंपाइल करें और स्क्रिप्ट फ़ाइलों को प्राप्त करें। यहाँ मैं FileReference के लिए क्या मिला है:
//FileReference
package flash.net
{
import flash.events.*;
import flash.utils.*;
public class FileReference extends flash.events.EventDispatcher
{
public function FileReference()
{
super();
return;
}
public function upload(arg1:flash.net.URLRequest, arg2:String="Filedata", arg3:Boolean=false):void
{
}
private function _load(arg1:flash.utils.ByteArray):void
{
}
public function load():void
{
this._load(new ByteArray());
return;
}
public function get size():uint
{
}
public function get type():String
{
}
public function browse(arg1:Array=null):Boolean
{
}
public function get name():String
{
}
public function get creator():String
{
}
public function get creationDate():Date
{
}
public function download(arg1:flash.net.URLRequest, arg2:String=null):void
{
}
public function get modificationDate():Date
{
}
public function get data():flash.utils.ByteArray
{
}
public function cancel():void
{
}
private function _save(arg1:flash.utils.ByteArray, arg2:String):void
{
}
public function save(arg1:*, arg2:String=null):void
{
var defaultFileName:String=null;
var data:*;
var d:flash.utils.ByteArray;
var loc1:*;
data = arg1;
defaultFileName = arg2;
d = new ByteArray();
if (data == null)
{
throw new ArgumentError("data");
}
if (data is String)
{
d.writeUTFBytes(data as String);
}
else if (data is XML)
{
d.writeUTFBytes((data as XML).toXMLString());
}
else if (data is ByteArray)
{
d.writeBytes(data as ByteArray);
}
else
{
try
{
d.writeUTFBytes(data);
}
catch (e:Error)
{
throw new ArgumentError("data");
}
}
d.position = 0;
if (defaultFileName == null)
{
defaultFileName = "";
}
this._save(d, defaultFileName);
return;
}
}
}
मैं अत्यधिक इस फ़ाइल को नहीं बदलते सलाह देते हैं और बल्कि यह विस्तार और कार्यों आप संशोधित करना जरुरी है। अन्यथा, आपको library.swf को पुन: संकलित करने और एक कस्टम playerglobal.swc बनाने की आवश्यकता होगी।
उन डमी विधियों के लिए क्या खड़ा है? क्या FileReference वास्तव में एक आंतरिक वर्ग का एक उदाहरण है, जो बदला नहीं जा सकता है? असल में मैंने सोचा कि अपलोड() विधि सीधे स्ट्रीमिंग का प्रबंधन कैसे करती है, फ़ाइल को स्मृति में लोड किए बिना और शायद इसे मेरे ऐप में किसी भी तरह नकल कर सकती है। अगर किसी भी तरह से इसे हासिल करना संभव है तो मुझे कुछ बंदर पैचिंग करने पर कोई फर्क नहीं पड़ता। – jayarjo
"सामान" है कि आप को देखने के लिए मौजूद हैं (Win7 के लिए वैसे भी) उपलब्ध है की कोई भी C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
में फ्लैश CS4 भाग संस्करण के आधार पर बदल सकता है। कक्षाएं कॉन्फ़िगरेशन के अंदर कक्षा फ़ोल्डर में हैं।
जैसा कि अन्य लोगों ने बताया है कि आप फ्लैश और फ्लेक्स फ्रेमवर्क कक्षाओं के स्रोत देख सकते हैं। सटीक स्थान अलग-अलग होगा।
विंडोज 7 परफ्लैश CS4 के लिए:
C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
फ्लेक्स के लिए:
...\flex_sdk\frameworks\projects\framework\src
आप किसी भी FRA बदल सकते हैं जब तक आप सावधान रहें, मेवर्क क्लास चाहते हैं। फ्लैश नामकरण में इसे बंदर पैचिंग के रूप में जाना जाता है। फ्रेम प्रोजेक्ट के रूप में एक ही पूर्ण पैकेज संरचना और कक्षा के नाम के साथ अपनी परियोजना में एक कक्षा बनाएं और संकलक ढांचे वर्ग के बजाय आपकी कस्टम कक्षा को ढूंढ और उपयोग करेगा।
फ्रेमवर्क आरएसएल के साथ ऐसा करने में कुछ जटिलताएं हैं। कि यहाँ देखें:
कैसे बंदर पैच करने के लिए जब फ्लेक्स RSLs
http://blogs.adobe.com/dloverin/2010/01/how_to_monkey_patch_when_using_flex_rsls.html
का उपयोग कर यह अंतर्निहित या "आंतरिक" वर्गों के लिए लागू नहीं होता। वे उपरोक्त स्रोत स्थानों में स्टब कोड होने तक खिलाड़ी और इच्छाओं में निर्मित होते हैं। आप वास्तव में आंतरिक वर्गों को नहीं बदल सकते हैं।
अंतर्दृष्टि पोस्ट के लिए धन्यवाद - बहुत जानकारीपूर्ण। फाइलरेंसेंस आंतरिक कक्षा तब है? – jayarjo
@Jayarjo, हाँ, फ़ाइल संदर्भ आंतरिक है, या कम से कम आंशिक रूप से आंतरिक है। स्रोत को देखें और आप देखेंगे कि कई विधियां खाली हैं। ऐसा इसलिए है क्योंकि उनके लिए कोड रनटाइम द्वारा प्रदान किया गया मूल कोड है। –
- 1. क्या आर के साथ EXIF डेटा पढ़ना संभव है?
- 2. फ्लैश: क्या यह 'srand` संभव है?
- 3. क्या स्ट्रीमिंग के बिना HttpRequest पैरामीटर पढ़ना संभव है?
- 4. [....] नेट स्रोतों में क्या मतलब है?
- 5. क्या पुनर्विक्रेता विविध प्रकारों को बदल सकता है?
- 6. क्या जावास्क्रिप्ट @page सीएसएस के मूल्य को बदल सकता है?
- 7. क्या .changes और .sources फ़ाइलों के बिना एक फ़ारो छवि को तैनात करना संभव है
- 8. क्या jQuery बदल सकता है $ $ (विंडो)। Width() `?
- 9. क्या कोई एक दो (शायद डब्ल्यूआईए) स्कैनर सुन सकता है?
- 10. जीसीडी डिस्पैच स्रोतों और चयन() के बीच क्या अंतर है?
- 11. क्या UIBarButtonItem को फीका करने के लिए कोर एनीमेशन का उपयोग करना संभव है?
- 12. क्या यूआरएल से सिस्टम.आईओ.स्ट्रीम ऑब्जेक्ट में पढ़ना संभव है?
- 13. क्या NSMainQueueConcurrencyType का उपयोग करते समय कोर डेटा को प्रदर्शनब्लॉक के भीतर पढ़ना आवश्यक है?
- 14. क्या एंड्रॉइड में फ़ाइल भी पढ़ना संभव है?
- 15. क्या डार्ट में कंसोल से पढ़ना संभव है?
- 16. Meteor.userId बदल सकता है
- 17. क्या जावास्क्रिप्ट के साथ फ्लैश एप्लेट के बाहर/बाहर खींचना और ड्रॉप करना संभव है?
- 18. क्या एसवीएन से बाहर .gitignore फ़ाइलों को रखना संभव है?
- 19. एस 3 के साथ फ्लैश छद्म स्ट्रीमिंग करना संभव है?
- 20. क्या एलएलवीएम बिटकोड फ़ाइल को एलएलएमएम :: मॉड्यूल में पढ़ना संभव है?
- 21. जावा में माइक्रोसॉफ्ट एक्सेस फ़ाइलों को पढ़ना
- 22. पाइथन सूची में .csv फ़ाइलों को पढ़ना
- 23. होस्टिंगइन्वायरमेंट क्लास और एचटीपीआरटाइम क्लास के बीच क्या अंतर है?
- 24. हैडोप और डीजेगो, क्या यह संभव है?
- 25. कोर डेटा संस्करण xcdatamodel फ़ाइलों को हटाने
- 26. निर्देशिका से एकाधिक फ़ाइलों को पढ़ना
- 27. क्या क्लास में बनाए गए स्थान को बदलने के लिए PHPUnit Mock ऑब्जेक्ट को संभव है?
- 28. कोर डंप फ़ाइलों को क्यों उत्पन्न किया जाता है?
- 29. बड़ी संख्या में फ़ाइलों को पढ़ना
- 30. क्या कोई कार्य/प्रतिनिधि इसके तर्कों को बदल सकता है?
क्या आप इसे बदलना चाहते हैं? मैं एक कस्टम क्लास बनाने की अनुशंसा करता हूं जो FileReference बढ़ाता है और उन कार्यों को ओवरराइड करता है जिन्हें आप बदलना चाहते हैं। – Corey
वैसे हाँ, ऐसा करने का आपका तरीका निश्चित रूप से क्लीनर है, लेकिन यह मुख्य बिंदु नहीं है - क्या मैं उन्हें पढ़ सकता हूं? कहीं भी? – jayarjo