Me gustaría leer la fuente de la clase flash.net.FileReference
. es posible? ¿Dónde puedo encontrar los archivos fuente, vienen con Adobe Flash o Flash Builder?¿Es posible leer (y quizás cambiar) las fuentes de los archivos centrales de la clase Flash?
Respuesta
Para leer los archivos del paquete flash, puede encontrar el playerglobal.swc - cambie el nombre a playerglobal.zip y descomprima el paquete. Luego, descompile el archivo library.swf y obtenga los archivos de script. Esto es lo que encontré para 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;
}
}
}
I altamente no recomienda cambiar este archivo y más bien extenderla y anular las funciones que necesita modificar. De lo contrario, deberá volver a compilar library.swf y crear un playerglobal.swc personalizado.
¿Qué significan esos métodos ficticios? ¿Es FileReference en realidad un ejemplo de una clase intrínseca, que podría no cambiarse? En realidad, me pregunto cómo el método upload() administra la transmisión directa, sin cargar el archivo en la memoria y tal vez imitarlo de alguna manera en mi aplicación. No me importa hacer algunos parches de mono si es posible lograr esto de alguna manera. – jayarjo
Cualquiera de las "cosas" que está disponible para usted para ver se encuentran (para Win7 de todos modos) en C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
La porción Flash CS4 podría cambiar dependiendo de la versión que tiene. Las clases están en la carpeta Clases dentro de la configuración.
Como mencionan otros, puede ver las fuentes de las clases de marco de Flash y Flex. La ubicación exacta variará.
para Flash CS4 en Windows 7:
C:\Users\<your_user>\AppData\Local\Adobe\Flash CS4\en\Configuration
para Flex:
...\flex_sdk\frameworks\projects\framework\src
puede cambiar cualquiera fra clase de trabajo que desea siempre que tenga cuidado. En la nomenclatura Flash esto se conoce como Monkey Patching. Cree una clase en su proyecto con la misma estructura de paquete completo y nombre de clase que la clase de marco y el compilador encontrará y usará su clase personalizada en lugar de la clase de marco.
Hay algunas complicaciones al hacer esto con los marcos RSL. Para que ver aquí:
Cómo Mono Patch al utilizar Flex RSL
http://blogs.adobe.com/dloverin/2010/01/how_to_monkey_patch_when_using_flex_rsls.html
Esto no se aplica a las clases "intrínsecas" incorporados o. Éstos están incorporados en el reproductor y tendrán un código auxiliar en las ubicaciones de origen anteriores. En realidad no puedes cambiar las clases intrínsecas.
Gracias por su perspicaz publicación - muy informativo. ¿Es la clase intrínseca FileReference entonces? – jayarjo
@jayarjo, sí, FileReference es intrínseco, o al menos parcialmente intrínseco. Mira la fuente y verás que muchos de los métodos están vacíos. Eso es porque el código para ellos es código nativo proporcionado por el tiempo de ejecución. –
- 1. ¿Fuentes centrales de imágenes de NinePatch?
- 2. Flash: ¿Es posible `srand`?
- 3. ¿Es posible cambiar la clase de un objeto Ruby?
- 4. Es una ruta de clase grande de varios archivos jar (quizás no utilizados) ineficiente
- 5. leer archivos de entrada, de la manera más rápida posible?
- 6. ¿Cómo cambiar dinámicamente las fuentes de eventos?
- 7. ¿Es posible determinar las fuentes que Windows elige para el enlace de fuentes?
- 8. Creación de fuentes y archivos de documentos
- 9. BIRT 3.7 tiempo de ejecución. Ya no es posible personalizar las fuentes PDF y los controladores jdbc?
- 10. ¿Cómo cambiar globalmente las fuentes en FireMonkey?
- 11. ¿Es posible leer archivos FTP sin escribirlos usando Python?
- 12. ¿Cuál es la diferencia entre las fuentes TrueType y las fuentes Type-1?
- 13. Cambiar el tamaño de las fuentes en Matlab Parcelas
- 14. ¿Es posible cambiar la instancia de clase externa de una clase interna en Java?
- 15. ¿Es posible cambiar la acción de UIButton?
- 16. ¿Puedo cambiar el tamaño de las fuentes Xcode IDE?
- 17. ¿Es posible proteger archivos swf?
- 18. Agregar métodos personalizados a las clases de datos centrales
- 19. ¿Es posible usar UDP en Flash/ActionScript?
- 20. Cómo leer las etiquetas de archivos MP3
- 21. ¿Es posible dividir los archivos maven pom?
- 22. ¿Puede Flash Action Script leer y escribir el sistema de archivos local?
- 23. Cómo suprimir las advertencias 'Quizás esto es método de programa' de ProGuard
- 24. ¿Es posible pasar un mensaje flash de Rails a Sinatra?
- 25. ¿Es posible cambiar el nombre de la clase de error en jQuery validate?
- 26. ¿Es posible cambiar la posición de los popovers de Bootstrap según el ancho de la pantalla?
- 27. ¿Cuál es más eficiente teniendo en cuenta el tiempo de carga de la página, utilizando los archivos de fuentes locales o las fuentes web de Google?
- 28. ¿Desea cambiar la opacidad de un NSPopover? ¿Es posible?
- 29. ¿Es posible cambiar la estructura de directorios de Yeoman?
- 30. ¿Es posible hacer pseudo-streaming Flash con S3?
¿Qué es lo que le gustaría cambiar? Recomiendo crear una clase personalizada que amplíe FileReference y anule las funciones que desea cambiar. – Corey
Bueno, sí, su forma de hacerlo es definitivamente más limpia, pero ese no es el punto principal. ¿Puedo leerlos? ¿En cualquier sitio? – jayarjo