Даже в определениях идиотизма встречается идиотизм.
Цитата:
Идиотизм — устаревшее название идиомы
Идиома в программировании — понятие близкое к понятию шаблона проектирования. Идиомы представляют собой шаблоны проектирования, учитывающие специфику конкретного языка программирования и потому не универсальные. Это хорошие решения проектирования для конкретного языка или программной платформы.
Идиома в программировании — понятие близкое к понятию шаблона проектирования. Идиомы представляют собой шаблоны проектирования, учитывающие специфику конкретного языка программирования и потому не универсальные. Это хорошие решения проектирования для конкретного языка или программной платформы.
Идиотизмы: Metadata у Stage
для понимания материала необходимы следующие знания:
Metadata
flash.utils.describeType
у себя в проектах, я довольно часто использую метаданные.
в AS есть зарезервированный метатэг [Exclude], который скрывает указанную сущность в инспекторе билдера, и иногда в подсказках к коду. тэг должен применяться к классу. множество примеров можно обнаружить во Flex-фрэймворке. но этот метатэг применим не только для флекса, но и к обычным pure-as3 проектам.
так же этот тэг используется в стандартных классах. как известно у класса Stage есть ряд переопределённых свойств, которые кидают исключение при попытки обратится к ним. так вот эти свойства перечислены в [Exclude]-тэгах. правда идиотизм в том, что все эти тэги объявлены у свойства frameRate:
Код:
<type name="flash.display::Stage" base="flash.display::DisplayObjectContainer" isDynamic="false" isFinal="false" isStatic="false"> <metadata name="Event"> <arg key="name" value="fullScreen"/> <arg key="type" value="flash.events.FullScreenEvent"/> </metadata> <metadata name="Event"> <arg key="name" value="resize"/> <arg key="type" value="flash.events.Event"/> </metadata> <metadata name="Event"> <arg key="name" value="mouseLeave"/> <arg key="type" value="flash.events.Event"/> </metadata> <extendsClass type="flash.display::DisplayObjectContainer"/> <extendsClass type="flash.display::InteractiveObject"/> <extendsClass type="flash.display::DisplayObject"/> <extendsClass type="flash.events::EventDispatcher"/> <extendsClass type="Object"/> <implementsInterface type="flash.display::IBitmapDrawable"/> <implementsInterface type="flash.events::IEventDispatcher"/> <accessor name="accessibilityImplementation" access="readwrite" type="flash.accessibility::AccessibilityImplementation" declaredBy="flash.display::InteractiveObject"> <metadata name="Inspectable"> <arg key="environment" value="none"/> </metadata> </accessor> <accessor name="mask" access="readwrite" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/> <accessor name="fullScreenHeight" access="readonly" type="uint" declaredBy="flash.display::Stage"/> <accessor name="rotationY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="colorCorrectionSupport" access="readonly" type="String" declaredBy="flash.display::Stage"/> <accessor name="focusRect" access="readwrite" type="Object" declaredBy="flash.display::InteractiveObject"/> <accessor name="scaleZ" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="transform" access="readwrite" type="flash.geom::Transform" declaredBy="flash.display::DisplayObject"/> <method name="setChildIndex" declaredBy="flash.display::Stage" returnType="void"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> <parameter index="2" type="int" optional="false"/> </method> <method name="addChild" declaredBy="flash.display::Stage" returnType="flash.display::DisplayObject"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <accessor name="height" access="readwrite" type="Number" declaredBy="flash.display::Stage"/> <accessor name="contextMenu" access="readwrite" type="flash.ui::ContextMenu" declaredBy="flash.display::InteractiveObject"/> <accessor name="scrollRect" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/> <accessor name="rotation" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="accessibilityProperties" access="readwrite" type="flash.accessibility::AccessibilityProperties" declaredBy="flash.display::DisplayObject"/> <accessor name="tabIndex" access="readwrite" type="int" declaredBy="flash.display::InteractiveObject"/> <accessor name="mouseEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/> <accessor name="alpha" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="rotationZ" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="frameRate" access="readwrite" type="Number" declaredBy="flash.display::Stage"> <metadata name="Exclude"> <arg key="name" value="y"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="x"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="visible"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="transform"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="tabIndex"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="tabEnabled"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="scrollRect"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="scaleY"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="scaleX"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="scale9Grid"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="rotation"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="opaqueBackground"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="name"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="mouseEnabled"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="mask"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="loaderInfo"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="focusRect"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="filters"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="contextMenu"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="cacheAsBitmap"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="blendMode"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="alpha"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="accessibilityProperties"/> <arg key="kind" value="property"/> </metadata> <metadata name="Exclude"> <arg key="name" value="accessibilityImplementation"/> <arg key="kind" value="property"/> </metadata> </accessor> <accessor name="x" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="stageFocusRect" access="readwrite" type="Boolean" declaredBy="flash.display::Stage"/> <accessor name="y" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="isFocusInaccessible" declaredBy="flash.display::Stage" returnType="Boolean"/> <accessor name="tabEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/> <accessor name="opaqueBackground" access="readwrite" type="Object" declaredBy="flash.display::DisplayObject"/> <accessor name="stageHeight" access="readwrite" type="int" declaredBy="flash.display::Stage"/> <accessor name="cacheAsBitmap" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/> <accessor name="showDefaultContextMenu" access="readwrite" type="Boolean" declaredBy="flash.display::Stage"/> <accessor name="z" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="scaleX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="visible" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/> <accessor name="fullScreenWidth" access="readonly" type="uint" declaredBy="flash.display::Stage"/> <accessor name="colorCorrection" access="readwrite" type="String" declaredBy="flash.display::Stage"/> <accessor name="scaleY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="wmodeGPU" access="readonly" type="Boolean" declaredBy="flash.display::Stage"/> <accessor name="focus" access="readwrite" type="flash.display::InteractiveObject" declaredBy="flash.display::Stage"/> <accessor name="mouseChildren" access="readwrite" type="Boolean" declaredBy="flash.display::Stage"/> <method name="dispatchEvent" declaredBy="flash.display::Stage" returnType="Boolean"> <parameter index="1" type="flash.events::Event" optional="false"/> </method> <method name="willTrigger" declaredBy="flash.display::Stage" returnType="Boolean"> <parameter index="1" type="String" optional="false"/> </method> <method name="hasEventListener" declaredBy="flash.display::Stage" returnType="Boolean"> <parameter index="1" type="String" optional="false"/> </method> <method name="swapChildrenAt" declaredBy="flash.display::Stage" returnType="void"> <parameter index="1" type="int" optional="false"/> <parameter index="2" type="int" optional="false"/> </method> <accessor name="scaleMode" access="readwrite" type="String" declaredBy="flash.display::Stage"/> <method name="addEventListener" declaredBy="flash.display::Stage" returnType="void"> <parameter index="1" type="String" optional="false"/> <parameter index="2" type="Function" optional="false"/> <parameter index="3" type="Boolean" optional="true"/> <parameter index="4" type="int" optional="true"/> <parameter index="5" type="Boolean" optional="true"/> </method> <method name="invalidate" declaredBy="flash.display::Stage" returnType="void"/> <accessor name="align" access="readwrite" type="String" declaredBy="flash.display::Stage"/> <accessor name="width" access="readwrite" type="Number" declaredBy="flash.display::Stage"/> <accessor name="displayState" access="readwrite" type="String" declaredBy="flash.display::Stage"/> <method name="removeChildAt" declaredBy="flash.display::Stage" returnType="flash.display::DisplayObject"> <parameter index="1" type="int" optional="false"/> </method> <method name="addChildAt" declaredBy="flash.display::Stage" returnType="flash.display::DisplayObject"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> <parameter index="2" type="int" optional="false"/> </method> <accessor name="stageWidth" access="readwrite" type="int" declaredBy="flash.display::Stage"/> <accessor name="numChildren" access="readonly" type="int" declaredBy="flash.display::Stage"/> <accessor name="name" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/> <accessor name="blendMode" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/> <accessor name="tabChildren" access="readwrite" type="Boolean" declaredBy="flash.display::Stage"/> <accessor name="filters" access="readwrite" type="Array" declaredBy="flash.display::DisplayObject"/> <accessor name="fullScreenSourceRect" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::Stage"/> <accessor name="textSnapshot" access="readonly" type="flash.text::TextSnapshot" declaredBy="flash.display::Stage"/> <accessor name="scale9Grid" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/> <accessor name="rotationX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="quality" access="readwrite" type="String" declaredBy="flash.display::Stage"/> <method name="getChildByName" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject"> <parameter index="1" type="String" optional="false"/> </method> <method name="getChildIndex" declaredBy="flash.display::DisplayObjectContainer" returnType="int"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <method name="getChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject"> <parameter index="1" type="int" optional="false"/> </method> <method name="removeChild" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <method name="areInaccessibleObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean"> <parameter index="1" type="flash.geom::Point" optional="false"/> </method> <method name="swapChildren" declaredBy="flash.display::DisplayObjectContainer" returnType="void"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> <parameter index="2" type="flash.display::DisplayObject" optional="false"/> </method> <method name="contains" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <method name="getObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Array"> <parameter index="1" type="flash.geom::Point" optional="false"/> </method> <accessor name="accessibilityImplementation" access="readwrite" type="flash.accessibility::AccessibilityImplementation" declaredBy="flash.display::InteractiveObject"> <metadata name="Inspectable"> <arg key="environment" value="none"/> </metadata> </accessor> <accessor name="focusRect" access="readwrite" type="Object" declaredBy="flash.display::InteractiveObject"/> <accessor name="doubleClickEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/> <accessor name="contextMenu" access="readwrite" type="flash.ui::ContextMenu" declaredBy="flash.display::InteractiveObject"/> <accessor name="tabEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/> <accessor name="mouseEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/> <accessor name="tabIndex" access="readwrite" type="int" declaredBy="flash.display::InteractiveObject"/> <accessor name="stage" access="readonly" type="flash.display::Stage" declaredBy="flash.display::DisplayObject"/> <accessor name="rotationY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="scaleZ" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="accessibilityProperties" access="readwrite" type="flash.accessibility::AccessibilityProperties" declaredBy="flash.display::DisplayObject"/> <accessor name="scrollRect" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/> <accessor name="rotationZ" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="alpha" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="getBounds" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <accessor name="x" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="blendShader" access="writeonly" type="flash.display::Shader" declaredBy="flash.display::DisplayObject"/> <accessor name="opaqueBackground" access="readwrite" type="Object" declaredBy="flash.display::DisplayObject"/> <accessor name="y" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="cacheAsBitmap" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/> <accessor name="z" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="local3DToGlobal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point"> <parameter index="1" type="flash.geom::Vector3D" optional="false"/> </method> <accessor name="visible" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/> <accessor name="scaleX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="globalToLocal3D" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Vector3D"> <parameter index="1" type="flash.geom::Point" optional="false"/> </method> <accessor name="mouseX" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="hitTestPoint" declaredBy="flash.display::DisplayObject" returnType="Boolean"> <parameter index="1" type="Number" optional="false"/> <parameter index="2" type="Number" optional="false"/> <parameter index="3" type="Boolean" optional="true"/> </method> <accessor name="scaleY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="mouseY" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="parent" access="readonly" type="flash.display::DisplayObjectContainer" declaredBy="flash.display::DisplayObject"/> <accessor name="mask" access="readwrite" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/> <method name="getRect" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <accessor name="rotation" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <accessor name="transform" access="readwrite" type="flash.geom::Transform" declaredBy="flash.display::DisplayObject"/> <method name="localToGlobal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point"> <parameter index="1" type="flash.geom::Point" optional="false"/> </method> <method name="globalToLocal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point"> <parameter index="1" type="flash.geom::Point" optional="false"/> </method> <accessor name="name" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/> <accessor name="blendMode" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/> <accessor name="root" access="readonly" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/> <accessor name="filters" access="readwrite" type="Array" declaredBy="flash.display::DisplayObject"/> <accessor name="loaderInfo" access="readonly" type="flash.display::LoaderInfo" declaredBy="flash.display::DisplayObject"/> <accessor name="scale9Grid" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/> <accessor name="rotationX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/> <method name="hitTestObject" declaredBy="flash.display::DisplayObject" returnType="Boolean"> <parameter index="1" type="flash.display::DisplayObject" optional="false"/> </method> <method name="toString" declaredBy="flash.events::EventDispatcher" returnType="String"/> <method name="removeEventListener" declaredBy="flash.events::EventDispatcher" returnType="void"> <parameter index="1" type="String" optional="false"/> <parameter index="2" type="Function" optional="false"/> <parameter index="3" type="Boolean" optional="true"/> </method> </type>
Всего комментариев 0
Комментарии
Последние записи от BlooDHounD
- Обновление blooddy_crypto.swc до версии 0.5.1 (31.03.2016)
- Кто не успел - тот опоздал (19.04.2011)
- Обновление blooddy_crypto.swc до версии 0.3.1 (29.11.2010)
- blooddy_crypto.swc теперь умеет JSON (13.10.2010)
- Загадочный CommaExpression (06.09.2010)