我想阅读flash.net.FileReference
课程的来源。这可能吗?我在哪里可以找到源文件,它们是随Adobe Flash或Flash Builder一起提供的吗?
答案 0 :(得分:6)
要阅读flash包文件,您可以找到playerglobal.swc - 将名称更改为playerglobal.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。
答案 1 :(得分:3)
正如其他人提到的,您可以看到Flash和Flex框架类的源代码。具体位置会有所不同。
对于Windows 7上的Flash CS4:
C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
For Flex:
...\flex_sdk\frameworks\projects\framework\src
只要您小心,您就可以更改所需的任何框架类。在Flash命名法中,这被称为Monkey Patching。在项目中创建一个具有与框架类相同的完整包结构和类名的类,编译器将查找并使用您的自定义类而不是框架类。
使用框架RSL执行此操作时存在一些复杂情况。为此,请看这里:
使用Flex RSL时如何使用补丁程序
http://blogs.adobe.com/dloverin/2010/01/how_to_monkey_patch_when_using_flex_rsls.html
这不适用于内置或“内在”类。这些内置于播放器和遗嘱中,直到在上述源位置具有存根代码。你实际上无法改变内在的类。
答案 2 :(得分:0)
C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
Flash CS4部分可能会根据您拥有的版本而改变。类位于配置内的Classes文件夹中。