Метод Flex Interface createAutomationIDPartWithRequiredProperties ошибка - PullRequest
4 голосов
/ 27 июня 2010

В настоящее время я создаю класс, который расширяет UIComponent в Flex 3, но при попытке компиляции Flash Builder выдает некоторые ошибки

1044: метод интерфейса createAutomationIDPartWithRequiredProperties в пространстве имен mx.automation: IAutomationObject не реализованКомпоненты класса: ArtWorkImage

1044: метод интерфейса get автоматизацииEnabled в пространстве имен mx.automation: IAutomationObject не реализован классом com.senocular.display: TransformTool

Я вижу, что UIComponent реализует этот интерфейс, но яУ меня никогда не было этой ошибки раньше, я предполагаю, что UIComponent должен сделать эту реализацию по умолчанию, так что это должно быть что-то другое, я уже пытаюсь воссоздать проект или очистить его, но безрезультатно, может кто-нибудь подсказать мне, как, возможно, это можетбудьте исправлены, спасибо за вашу помощь

о, кстати, у меня был этот проект раньше во Flex Builder, экспортирован как FXP и импортирован во Flash Builder, спасибо!

1 Ответ

0 голосов
/ 16 марта 2011

Все объекты пользовательского интерфейса используют делегат автоматизации для управления реализацией интерфейса автоматизации. У каждого UIComponent есть определенный делегат автоматизации, зарегистрированный в Automation Framework. Эти реализации делегата автоматизации внедряются в объект средой автоматизации при создании объекта в соответствии с именем класса объекта.

Например:

  • UIComponent <- UIComponentAutomationImpl </li>
  • ToolTip <- ToolTipAutomationImpl </li>
  • DateChooser <- DateChooserAutomationImpl </li>

Обычно, если вы создаете подкласс компонента, вы должны наследовать реализацию автоматизации. Однако в зависимости от того, как создаются экземпляры объекта, инфраструктура автоматизации может не иметь возможности преобразовать имя класса в соответствующий суперкласс. В этом случае вам может потребоваться предпринять дополнительные шаги, чтобы внедрить автоматизацию в ваш класс.

Если вы хотите, чтобы ваш класс автоматически вводился с помощью конкретной реализации автоматизации, вам следует вызвать статический метод registerDelegateClass для класса mx.automation.Automation .

import mx.automation.*

Automation.registerDelegateClass(com.foo.bar.ArtWorkImage, mx.automation.delelegates.core.UIComponentAutomationImpl);

В качестве альтернативы вы можете напрямую реализовать методы IAutomationObject в вашем UIComponent или создать свой собственный класс делегата и создать его экземпляр и «внедрить» его в свой конструктор, передав тем самым инфраструктуру автоматизации.


Вот несколько ссылок, которые могут помочь вам понять структуру автоматизации:


http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/Automation.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/delegates/core/UIComponentAutomationImpl.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/package-detail.html

...