class ExternalFlashComponent(FlashComponentWrapper, IExternalFlashComponent): def __init__(self, settings): super(ExternalFlashComponent, self).__init__() self.__settings = settings self.__owner = None self.__state = _ExternalComponentState.UNDEFINED self.__bridge = DAAPIRootBridge(settings.rootPath, settings.initCallback) return @property def alias(self): return self.__settings.alias @property def owner(self): return self.__owner def createExternalComponent(self): self.createComponent(swf=self.__settings.url) self.__bridge.setPyScript(weakref.proxy(self)) def setOwner(self, owner): self.__owner = owner self.__tryToInvokeRegisterEvent(_ExternalComponentState.REGISTERED) def close(self): self.__invokeUnregisterEvent() self.__owner = None self.__state ^= ~_ExternalComponentState.CREATED self.__state |= _ExternalComponentState.CLOSED if self.__bridge is not None: self.__bridge.clear() self.__bridge = None super(ExternalFlashComponent, self).close() return def getSize(self): return self.component.size def setSize(self, width, height): self.component.size = (width, height) def getScale(self): return self.movie.stage.scaleX def setScale(self, scale): stage = self.movie.stage stage.scaleX = scale stage.scaleY = scale def startPlugins(self): pass def afterCreate(self): super(ExternalFlashComponent, self).afterCreate() self.__tryToInvokeRegisterEvent(_ExternalComponentState.CREATED) def invokeRegisterComponentForReplay(self): g_eventBus.handleEvent(events.ComponentEvent( events.ComponentEvent.COMPONENT_REGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL) def __tryToInvokeRegisterEvent(self, step): prevSteps = self.__state self.__state |= step if prevSteps != self.__state and self.__state == _ExternalComponentState.INITED: g_eventBus.handleEvent(events.ComponentEvent( events.ComponentEvent.COMPONENT_REGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL) def __invokeUnregisterEvent(self): if self.__state & _ExternalComponentState.REGISTERED > 0: self.__state ^= _ExternalComponentState.REGISTERED self.__state |= _ExternalComponentState.UNREGISTERED g_eventBus.handleEvent(events.ComponentEvent( events.ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL)
class CrosshairPanel(Flash.Flash, CrosshairPanelMeta): """Class is UI component of crosshair panel. It provides access to Action Script.""" def __init__(self): super(CrosshairPanel, self).__init__('crosshairPanel.swf', className=_CROSSHAIR_PANEL_COMPONENT, path=SCALEFORM_SWF_PATH_V3) self.__plugins = PluginsCollection(self) self.__plugins.addPlugins({'core': CorePlugin, 'settings': SettingsPlugin, 'events': EventBusPlugin, 'ammo': AmmoPlugin, 'vehicleState': VehicleStatePlugin, 'targetDistance': TargetDistancePlugin, 'gunMarkerDistance': GunMarkerDistancePlugin}) self.__viewID = CROSSHAIR_VIEW_ID.UNDEFINED self.__zoomFactor = 0.0 self.__distance = 0 self.__hasAmmo = True self.__configure() self.__daapiBridge = DAAPIRootBridge(rootPath='root.g_modeMC', initCallback='registerCrosshairPanel') self.__daapiBridge.setPyScript(weakref.proxy(self)) def close(self): if self.__daapiBridge is not None: self.__daapiBridge.clear() self.__daapiBridge = None super(CrosshairPanel, self).close() return def isVisible(self): """Is component visible. :return: bool. """ return self.component.visible def setVisible(self, visible): """Sets visibility of component. :param visible: bool. """ self.component.visible = visible def getViewID(self): """Gets current view ID of panel. :return: integer containing of CROSSHAIR_VIEW_ID. """ return self.__viewID def setViewID(self, viewID): """Sets view ID of panel to change view presentation. :param viewID: """ if viewID != self.__viewID: self.__viewID = viewID self.as_setViewS(viewID) def getSize(self): """Gets size of crosshair panel. :return: tuple(width, height). """ return self.component.size def setSize(self, width, height): """Sets size of crosshair panel in pixels. :param width: integer containing width of panel. :param height: integer containing height of panel. """ self.component.size = (width, height) def setPosition(self, x, y): """Sets position of crosshair panel in pixels. :param x: integer containing x coordinate of center in pixels. :param y: integer containing y coordinate of center in pixels. """ self.as_recreateDeviceS(x, y) def getScale(self): """Gets scale factor. :return: float containing scale factor. """ return self.movie.stage.scaleX def setScale(self, scale): """Sets scale factor. :param scale: float containing new scale factor. """ self.movie.stage.scaleX = scale self.movie.stage.scaleY = scale def getZoom(self): """Gets current zoom factor of player's camera. :return: float containing zoom factor. """ return self.__zoomFactor def setZoom(self, zoomFactor): """Gets current zoom factor of player's camera. :param zoomFactor: float containing zoom factor. """ if zoomFactor == self.__zoomFactor: return self.__zoomFactor = zoomFactor if zoomFactor > 1: zoomString = i18n.makeString(INGAME_GUI.AIM_ZOOM, zoom=zoomFactor) else: zoomString = '' self.as_setZoomS(zoomString) def getDistance(self): """Gets distance to desired target(point). :return: integer containing distance in meters. """ return self.__distance def setDistance(self, distance): """Sets distance to desired target(point). :param distance: integer containing distance in meters. """ if distance != self.__distance: self.__distance = distance self.as_setDistanceS(i18n.makeString(INGAME_GUI.DISTANCE_METERS, meters=distance)) def clearDistance(self, immediate = True): """Removes distance string from UI. :param immediate: if value equals True than removes distance string from UI immediately, otherwise - hides this sting with animation. """ self.__distance = 0 self.as_clearDistanceS(immediate) def setHasAmmo(self, hasAmmo): """Sets flag that indicates controlling vehicle has ammo. :param hasAmmo: bool. """ if self.__hasAmmo != hasAmmo: self.__hasAmmo = hasAmmo if not hasAmmo: self.as_updateAmmoStateS(i18n.makeString(INGAME_GUI.PLAYER_MESSAGES_POSTMORTEM_USERNOHASAMMO)) else: self.as_updateAmmoStateS('') def setGunMarkerPosition(self, position, relaxTime): """Sets new position of gun marker. This value is transferred to cpp component. :param position: vector3 :param relaxTime: float. """ self.component.updateMarkerPos(position, relaxTime) def _populate(self): super(CrosshairPanel, self)._populate() self.__plugins.init() self.__plugins.start() def _dispose(self): self.__plugins.stop() self.__plugins.fini() super(CrosshairPanel, self)._dispose() def __configure(self): self.component.wg_inputKeyMode = 2 self.component.position.z = DEPTH_OF_Aim self.component.focus = False self.component.moveFocus = False self.component.heightMode = 'PIXEL' self.component.widthMode = 'PIXEL' self.movie.backgroundAlpha = 0
class ExternalFlashComponent(Flash, IExternalFlashComponent): """ Class to create external flash components that are added to battle page. Its behavior like ViewTypes.COMPONENT, but python initializes given components.""" def __init__(self, settings): super(ExternalFlashComponent, self).__init__(settings.url, path=SCALEFORM_SWF_PATH_V3) raise isinstance( settings, ExternalFlashSettings) or AssertionError('Settings are invalid') self.__settings = settings self.__owner = None self.__state = _EXTERNAL_COMPONENT_STATE.UNDEFINED self.__bridge = DAAPIRootBridge(settings.rootPath, settings.initCallback) self.__bridge.setPyScript(weakref.proxy(self)) return @property def alias(self): """Gets name of view alias. :return: string containing name of view alias. """ return self.__settings.alias @property def owner(self): """Gets owner of given component. :return: object. """ return self.__owner def setOwner(self, owner): """Sets owner for external component and tries to register given component like other UI components. :param owner: object. """ self.__owner = owner self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.REGISTERED) def close(self): """Unregisters given component and removes it from display list.""" self.__invokeUnregisterEvent() self.__owner = None self.__state ^= ~_EXTERNAL_COMPONENT_STATE.CREATED self.__state |= _EXTERNAL_COMPONENT_STATE.CLOSED if self.__bridge is not None: self.__bridge.clear() self.__bridge = None super(ExternalFlashComponent, self).close() return def isVisible(self): """Is component visible. :return: bool. """ return self.component.visible def setVisible(self, visible): """Sets visibility of component. :param visible: bool. """ self.component.visible = visible def getSize(self): """Gets size of crosshair panel. :return: tuple(width, height). """ return self.component.size def setSize(self, width, height): """Sets size of crosshair panel in pixels. :param width: integer containing width of panel. :param height: integer containing height of panel. """ self.component.size = (width, height) def getScale(self): """Gets scale factor. :return: float containing scale factor. """ return self.movie.stage.scaleX def setScale(self, scale): """Sets scale factor. :param scale: float containing new scale factor. """ stage = self.movie.stage stage.scaleX = scale stage.scaleY = scale def afterCreate(self): super(ExternalFlashComponent, self).afterCreate() self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.CREATED) def __tryToInvokeRegisterEvent(self, step): prevSteps = self.__state self.__state |= step if prevSteps != self.__state and self.__state == _EXTERNAL_COMPONENT_STATE.INITED: g_eventBus.handleEvent(ComponentEvent( ComponentEvent.COMPONENT_REGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL) def __invokeUnregisterEvent(self): if self.__state & _EXTERNAL_COMPONENT_STATE.REGISTERED > 0: self.__state ^= _EXTERNAL_COMPONENT_STATE.REGISTERED self.__state |= _EXTERNAL_COMPONENT_STATE.UNREGISTERED g_eventBus.handleEvent(ComponentEvent( ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL)
class MarkersManager(Flash, VehicleMarkersManagerMeta, plugins.IMarkersManager): def __init__(self, parentUI): super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF, path=SCALEFORM_SWF_PATH_V3) self.component.wg_inputKeyMode = 2 self.component.position.z = DEPTH_OF_VehicleMarker self.component.drawWithRestrictedViewPort = False self.movie.backgroundAlpha = 0 self.__plugins = None self.__canvas = None self.__parentUI = parentUI self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas', 'registerMarkersManager') self.__daapiBridge.setPyScript(weakref.proxy(self)) return def close(self): if self.__daapiBridge is not None: self.__daapiBridge.clear() self.__daapiBridge = None super(MarkersManager, self).close() return def setScaleProps(self, minScale = 40, maxScale = 100, defScale = 100, speed = 3.0): if constants.IS_DEVELOPMENT: self.__canvas.scaleProperties = (minScale, maxScale, defScale, speed) def setAlphaProps(self, minAlpha = 40, maxAlpha = 100, defAlpha = 100, speed = 3.0): if constants.IS_DEVELOPMENT: self.__canvas.alphaProperties = (minAlpha, maxAlpha, defAlpha, speed) def createMarker(self, mProv, symbol, active = True): return self.__canvas.addMarker(mProv, symbol, active) def setMarkerActive(self, handle, active): self.__canvas.markerSetActive(handle, active) def setMarkerMatrix(self, handle, matrix): self.__canvas.markerSetMatrix(handle, matrix) def destroyMarker(self, handle): if self.__canvas: self.__canvas.delMarker(handle) def invokeMarker(self, handle, function, args = None): if handle == -1: return else: if args is None: args = [] self.__canvas.markerInvoke(handle, (function, args)) return def getCanvasProxy(self): return self.__canvasProxy def _populate(self): super(MarkersManager, self)._populate() self.__addCanvas() self.__setMarkersScale() self.__setMarkerDuration() self.__setMarkerSettings() self.__setColorsSchemes(g_settingsCore.getSetting('isColorBlind')) self.__addListeners() def _dispose(self): self.__removeListeners() self.__removeCanvas() self.__parentUI = None super(MarkersManager, self)._dispose() return def __addCanvas(self): if g_sessionProvider.arenaVisitor.hasFlags(): self.__canvas = GUI.WGVehicleFalloutMarkersCanvasFlashAS3(self.movie) else: self.__canvas = GUI.WGVehicleMarkersCanvasFlashAS3(self.movie) self.__canvas.wg_inputKeyMode = 2 self.__canvas.scaleProperties = GUI_SETTINGS.markerScaleSettings self.__canvas.alphaProperties = GUI_SETTINGS.markerBgSettings self.__canvasProxy = weakref.ref(self.__canvas) self.component.addChild(self.__canvas, 'vehicleMarkersCanvas') def __removeCanvas(self): if self.__canvas is not None: self.component.delChild(self.__canvas) self.__canvas = None self.__canvasProxy = None return def __setMarkersScale(self, scale = None): if scale is None: scale = g_settingsCore.interfaceScale.get() stage = self.movie.stage stage.scaleX = scale stage.scaleY = scale return def __setMarkerDuration(self): self.as_setMarkerDurationS(GUI_SETTINGS.markerHitSplashDuration) def __setMarkerSettings(self, update = False): getter = g_settingsCore.getSetting self.as_setMarkerSettingsS({'enemy': getter('enemy'), 'dead': getter('dead'), 'ally': getter('ally')}) if update: self.as_updateMarkersSettingsS() def __setColorsSchemes(self, isColorBlind): colors = GuiColorsLoader.load() defaultSchemes = {} for name in colors.schemasNames(): if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX): continue defaultSchemes[name] = colors.getSubSchemeToFlash(name, GuiColorsLoader.DEFAULT_SUB_SCHEME) colorBlindSchemes = {} for name in colors.schemasNames(): if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX): continue colorBlindSchemes[name] = colors.getSubSchemeToFlash(name, GuiColorsLoader.COLOR_BLIND_SUB_SCHEME) self.as_setColorSchemesS(defaultSchemes, colorBlindSchemes) self.as_setColorBlindS(isColorBlind) def __addListeners(self): self.__plugins = plugins.createPlugins(self) self.__plugins.init() self.__plugins.start() g_settingsCore.interfaceScale.onScaleChanged += self.__setMarkersScale self.addListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE) self.addListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE) self.addListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE) g_settingsCore.onSettingsChanged += self.__onSettingsChanged g_guiResetters.add(self.__onRecreateDevice) def __removeListeners(self): self.removeListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE) self.removeListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE) self.removeListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE) if self.__plugins is not None: self.__plugins.stop() self.__plugins.fini() g_settingsCore.interfaceScale.onScaleChanged -= self.__setMarkersScale g_settingsCore.onSettingsChanged -= self.__onSettingsChanged g_guiResetters.discard(self.__onRecreateDevice) return def __handleShowExtendedInfo(self, event): """Show extended vehicle information, when player press [Left Alt] key. Vehicle marker consists: - vehicle type (permanent); - nickname (extended); - health bar (extended); - vehicle name (extended); - vehicle level (extended and configure in settings); - vehicle icon (extended and configure in settings). """ if self.__parentUI is None or not self.__parentUI.isModalViewShown(): self.as_setShowExInfoFlagS(event.ctx['isDown']) return def __handleGUIVisibility(self, event): self.component.visible = event.ctx['visible'] def __handleMarkerVisibility(self, _): """Special event toggles markers visibility only by key sequence CAPS + N (by default) and no any UI visible.""" self.component.visible = not self.component.visible def __onSettingsChanged(self, diff): """Listener for event g_settingsCore.onSettingsChanged. :param diff: dictionary containing changes in settings.""" if 'isColorBlind' in diff: self.as_setColorBlindS(diff['isColorBlind']) if 'enemy' in diff or 'dead' in diff or 'ally' in diff: self.__setMarkerSettings(True) def __onRecreateDevice(self): """Listener for event personality.onRecreateDevice.""" self.__setMarkersScale()
class MarkersManager(Flash, VehicleMarkersManagerMeta, plugins.IMarkersManager): def __init__(self, parentUI): super(MarkersManager, self).__init__(settings.MARKERS_MANAGER_SWF, path=SCALEFORM_SWF_PATH_V3) self.component.wg_inputKeyMode = 2 self.component.position.z = DEPTH_OF_VehicleMarker self.component.drawWithRestrictedViewPort = False self.movie.backgroundAlpha = 0 self.__plugins = None self.__canvas = None self.__parentUI = parentUI self.__daapiBridge = DAAPIRootBridge('root.vehicleMarkersCanvas', 'registerMarkersManager') self.__daapiBridge.setPyScript(weakref.proxy(self)) return def close(self): if self.__daapiBridge is not None: self.__daapiBridge.clear() self.__daapiBridge = None super(MarkersManager, self).close() return def setScaleProps(self, minScale=40, maxScale=100, defScale=100, speed=3.0): if constants.IS_DEVELOPMENT: self.__canvas.scaleProperties = (minScale, maxScale, defScale, speed) def setAlphaProps(self, minAlpha=40, maxAlpha=100, defAlpha=100, speed=3.0): if constants.IS_DEVELOPMENT: self.__canvas.alphaProperties = (minAlpha, maxAlpha, defAlpha, speed) def createMarker(self, mProv, symbol, active=True): return self.__canvas.addMarker(mProv, symbol, active) def setMarkerActive(self, handle, active): self.__canvas.markerSetActive(handle, active) def setMarkerMatrix(self, handle, matrix): self.__canvas.markerSetMatrix(handle, matrix) def destroyMarker(self, handle): if self.__canvas: self.__canvas.delMarker(handle) def invokeMarker(self, handle, function, args=None): if handle == -1: return else: if args is None: args = [] self.__canvas.markerInvoke(handle, (function, args)) return def getCanvasProxy(self): return self.__canvasProxy def _populate(self): super(MarkersManager, self)._populate() self.__addCanvas() self.__setMarkersScale() self.__setMarkerDuration() self.__setMarkerSettings() self.__setColorsSchemes(g_settingsCore.getSetting('isColorBlind')) self.__addListeners() def _dispose(self): self.__removeListeners() self.__removeCanvas() self.__parentUI = None super(MarkersManager, self)._dispose() return def __addCanvas(self): if g_sessionProvider.arenaVisitor.hasFlags(): self.__canvas = GUI.WGVehicleFalloutMarkersCanvasFlashAS3( self.movie) else: self.__canvas = GUI.WGVehicleMarkersCanvasFlashAS3(self.movie) self.__canvas.wg_inputKeyMode = 2 self.__canvas.scaleProperties = GUI_SETTINGS.markerScaleSettings self.__canvas.alphaProperties = GUI_SETTINGS.markerBgSettings self.__canvasProxy = weakref.ref(self.__canvas) self.component.addChild(self.__canvas, 'vehicleMarkersCanvas') def __removeCanvas(self): if self.__canvas is not None: self.component.delChild(self.__canvas) self.__canvas = None self.__canvasProxy = None return def __setMarkersScale(self, scale=None): if scale is None: scale = g_settingsCore.interfaceScale.get() stage = self.movie.stage stage.scaleX = scale stage.scaleY = scale return def __setMarkerDuration(self): self.as_setMarkerDurationS(GUI_SETTINGS.markerHitSplashDuration) def __setMarkerSettings(self, update=False): getter = g_settingsCore.getSetting self.as_setMarkerSettingsS({ 'enemy': getter('enemy'), 'dead': getter('dead'), 'ally': getter('ally') }) if update: self.as_updateMarkersSettingsS() def __setColorsSchemes(self, isColorBlind): colors = GuiColorsLoader.load() defaultSchemes = {} for name in colors.schemasNames(): if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX): continue defaultSchemes[name] = colors.getSubSchemeToFlash( name, GuiColorsLoader.DEFAULT_SUB_SCHEME) colorBlindSchemes = {} for name in colors.schemasNames(): if not name.startswith(settings.MARKERS_COLOR_SCHEME_PREFIX): continue colorBlindSchemes[name] = colors.getSubSchemeToFlash( name, GuiColorsLoader.COLOR_BLIND_SUB_SCHEME) self.as_setColorSchemesS(defaultSchemes, colorBlindSchemes) self.as_setColorBlindS(isColorBlind) def __addListeners(self): self.__plugins = plugins.createPlugins(self) self.__plugins.init() self.__plugins.start() g_settingsCore.interfaceScale.onScaleChanged += self.__setMarkersScale self.addListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE) self.addListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE) self.addListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE) g_settingsCore.onSettingsChanged += self.__onSettingsChanged g_guiResetters.add(self.__onRecreateDevice) def __removeListeners(self): self.removeListener(GameEvent.SHOW_EXTENDED_INFO, self.__handleShowExtendedInfo, scope=settings.SCOPE) self.removeListener(GameEvent.GUI_VISIBILITY, self.__handleGUIVisibility, scope=settings.SCOPE) self.removeListener(GameEvent.MARKERS_2D_VISIBILITY, self.__handleMarkerVisibility, scope=settings.SCOPE) if self.__plugins is not None: self.__plugins.stop() self.__plugins.fini() g_settingsCore.interfaceScale.onScaleChanged -= self.__setMarkersScale g_settingsCore.onSettingsChanged -= self.__onSettingsChanged g_guiResetters.discard(self.__onRecreateDevice) return def __handleShowExtendedInfo(self, event): """Show extended vehicle information, when player press [Left Alt] key. Vehicle marker consists: - vehicle type (permanent); - nickname (extended); - health bar (extended); - vehicle name (extended); - vehicle level (extended and configure in settings); - vehicle icon (extended and configure in settings). """ if self.__parentUI is None or not self.__parentUI.isModalViewShown(): self.as_setShowExInfoFlagS(event.ctx['isDown']) return def __handleGUIVisibility(self, event): self.component.visible = event.ctx['visible'] def __handleMarkerVisibility(self, _): """Special event toggles markers visibility only by key sequence CAPS + N (by default) and no any UI visible.""" self.component.visible = not self.component.visible def __onSettingsChanged(self, diff): """Listener for event g_settingsCore.onSettingsChanged. :param diff: dictionary containing changes in settings.""" if 'isColorBlind' in diff: self.as_setColorBlindS(diff['isColorBlind']) if 'enemy' in diff or 'dead' in diff or 'ally' in diff: self.__setMarkerSettings(True) def __onRecreateDevice(self): """Listener for event personality.onRecreateDevice.""" self.__setMarkersScale()
class ExternalFlashComponent(Flash, IExternalFlashComponent): def __init__(self, settings): super(ExternalFlashComponent, self).__init__(settings.url, path=SCALEFORM_SWF_PATH_V3) self.__settings = settings self.__owner = None self.__state = _EXTERNAL_COMPONENT_STATE.UNDEFINED self.__bridge = DAAPIRootBridge(settings.rootPath, settings.initCallback) self.__bridge.setPyScript(weakref.proxy(self)) return @property def alias(self): return self.__settings.alias @property def owner(self): return self.__owner def setOwner(self, owner): self.__owner = owner self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.REGISTERED) def close(self): self.__invokeUnregisterEvent() self.__owner = None self.__state ^= ~_EXTERNAL_COMPONENT_STATE.CREATED self.__state |= _EXTERNAL_COMPONENT_STATE.CLOSED if self.__bridge is not None: self.__bridge.clear() self.__bridge = None super(ExternalFlashComponent, self).close() return def isVisible(self): return self.component.visible def setVisible(self, visible): self.component.visible = visible def getSize(self): return self.component.size def setSize(self, width, height): self.component.size = (width, height) def getScale(self): return self.movie.stage.scaleX def setScale(self, scale): stage = self.movie.stage stage.scaleX = scale stage.scaleY = scale def afterCreate(self): super(ExternalFlashComponent, self).afterCreate() self.__tryToInvokeRegisterEvent(_EXTERNAL_COMPONENT_STATE.CREATED) def __tryToInvokeRegisterEvent(self, step): prevSteps = self.__state self.__state |= step if prevSteps != self.__state and self.__state == _EXTERNAL_COMPONENT_STATE.INITED: g_eventBus.handleEvent(ComponentEvent( ComponentEvent.COMPONENT_REGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL) def __invokeUnregisterEvent(self): if self.__state & _EXTERNAL_COMPONENT_STATE.REGISTERED > 0: self.__state ^= _EXTERNAL_COMPONENT_STATE.REGISTERED self.__state |= _EXTERNAL_COMPONENT_STATE.UNREGISTERED g_eventBus.handleEvent(ComponentEvent( ComponentEvent.COMPONENT_UNREGISTERED, self.owner, self, self.alias), scope=EVENT_BUS_SCOPE.GLOBAL)