import { ByteArray, AssetBase } from '@awayjs/core'; import { Font } from '@awayjs/scene'; import { WaveAudio } from '@awayjs/core'; import { Sound } from '../media/Sound'; import { AXClass, ASObject, AXApplicationDomain } from '@awayfl/avm2'; /** * The ApplicationDomain class is a container for discrete groups of class definitions. * Application domains are used to partition classes that are in the same security domain. * They allow multiple definitions of the same class to exist and allow children to reuse parent * definitions. * *

Application domains are used when an external SWF file is loaded through the Loader class. * All ActionScript 3.0 definitions in the loaded SWF file are stored in the application * domain, which is specified by the applicationDomain property of the LoaderContext * object that you pass as a context parameter of the Loader object's load() or * loadBytes() method. The LoaderInfo object also contains an * applicationDomain property, which is read-only. * All code in a SWF file is defined to exist in an application domain. The current application * domain is where your main application runs. The system domain contains all application domains, * including the current domain, which means that it contains all Flash Player classes.Every application domain, * except the system domain, has an associated parent domain. * The parent domain of your main application's application domain is the system domain. * Loaded classes are defined only when their parent doesn't already define them. * You cannot override a loaded class definition with a newer definition. * For usage examples of application domains, see the. * The ApplicationDomain() constructor function allows you to create an ApplicationDomain object.

* * @internal Security considerations for application domains are discussed in the * applicationDomain property entries of URLRequest and LoaderInfo. */ export declare class ApplicationDomain extends ASObject { private static _systemDomain; private static getSystemDomain; private static _currentDomain; private _parentDomain; private _definitions; private _font_definitions; private _audio_definitions; private _memoryView; private _memory; axApplicationDomain: AXApplicationDomain; /** * Creates a new application domain. * @param parentDomain If no parent domain is passed in, * this application domain takes the system domain as its parent. */ constructor(parentDomain?: ApplicationDomain, isSystemDomain?: boolean); /** * Gets the current application domain in which your code is executing. * @internal Question: Do you call System.currentDomain? or Loader.currentDomain or request.currentDomain? */ static get currentDomain(): ApplicationDomain; static set currentDomain(value: ApplicationDomain); /** * Gets and sets the object on which domain-global memory operations * will operate within this ApplicationDomain. */ get domainMemory(): ByteArray; set domainMemory(mem: ByteArray); /** * Internal DataView for using domainMemory in runtime */ get internal_memoryView(): DataView; /** * Gets the minimum memory object length required to be used as * ApplicationDomain.domainMemory. */ static get MIN_DOMAIN_MEMORY_LENGTH(): number; /** * Gets the parent domain of this application domain. */ get parentDomain(): ApplicationDomain; addDefinition(name: string, asset: AssetBase): void; addAudioDefinition(name: string, asset: WaveAudio): void; addFontDefinition(name: string, asset: Font): void; hasSymbolForClass(className: string): boolean; getSymbolAdaptee(className: string): any; getSymbolDefinition(className: string): any; /** * Gets a public definition from the specified application domain. * The definition can be that of a class, a namespace, or a function. * @param name The name of the definition. * @return The object associated with the definition. * @internal throws SecurityError The definition belongs to a domain to which * the calling code does not have access. * @throws ReferenceError No public definition exists with the * specified name. */ getDefinition(name: string): AXClass; getFontDefinition(name: string): Font; getAwayJSAudio(name: string): WaveAudio; getAudioDefinition(name: string): Sound; getQualifiedDefinitionNames(): string[]; /** * Checks to see if a public definition exists within the specified application domain. * The definition can be that of a class, a namespace, or a function. * @param name The name of the definition. * @return A value of true if the specified definition exists; otherwise, false. */ hasDefinition(name: string): boolean; hasFontDefinition(name: string): boolean; hasAudioDefinition(name: string): boolean; } //# sourceMappingURL=ApplicationDomain.d.ts.map