| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
|
Hallo zusammen, ich arbeite gerade an einer Komponente, die der InputTextField Komponente nicht ganz unähnlich wird aber aus der MovieClip Klasse extended werden soll, damit ich die Klasse mit einem Bibliothekssymbol verknüpfen kann. Damit ich die Komponente ordentlich in die Fokusschleife einbinden kann, habe ich die IFocusManagerComponent Schnittstelle implementiert: Code: package de.framework.controls{
import flash.display.MovieClip;
import flash.text.TextField;
import fl.managers.IFocusManagerComponent;
public class InputField extends MovieClip implements IFocusManagerComponent {
public static const STATUS_NORMAL :String = 'inputfield_status_normal';
public static const STATUS_DISABLED :String = 'inputfield_status_disabled';
public static const STATUS_SELECTED :String = 'inputfield_status_selected';
public static const STATUS_ERROR :String = 'inputfield_status_error';
private var _status :String = STATUS_NORMAL;
private var _ifEnabled :Boolean = true;
private var _textField :TextField;
private var _focusEnabled :Boolean
public function InputField() {
}
// IMPLEMENTATION INTERFACE IFocusManagerComponent
public function get mouseFocusEnabled() :Boolean { return (_textField.mouseEnabled && _ifEnabled); }
public function get focusEnabled() :Boolean { return _focusEnabled; }
public function set focusEnabled( newValue:Boolean ) :void {
_focusEnabled = (newValue==true);
}
public function drawFocus( focused:Boolean ) :void {
if ( _focusEnabled && _ifEnabled ) {
_status = STATUS_SELECTED;
}
}
public function setFocus() :void {//only on tab focus
if ( _focusEnabled && _ifEnabled ) {
_textField.stage.focus = _textField;
_textField.setSelection(_textField.length, _textField.length);
}
}
// IMPLEMENTATION INTERFACE IFocusManagerComponent
} Code: TypeError: Error #1034: Typumwandlung fehlgeschlagen: de.framework.controls::InputField@3404041 kann nicht in fl.core.UIComponent umgewandelt werden. at fl.managers::FocusManager/getTopLevelFocusTarget() at fl.managers::FocusManager/mouseDownHandler() Muss ich jetzt die alle UIComponent Eigenschaften einbauen oder sogar aus UIComponent extenden? Dann kann ich das nämlich vergessen und muss mir einen eigenen FocusManager schreiben. Oder passiert mir da irgendwo ein ganz anderer Denkfehler? Geändert von T.Decay (13-08-2008 um 10:49 Uhr) |
| | |
| | #2 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
|
die Function in fl.managers.FocusManager, die den Error verursacht, sieht so aus: Code: private function getTopLevelFocusTarget(o:InteractiveObject):InteractiveObject {
while (o != InteractiveObject(form)) {
if (o is IFocusManagerComponent &&
IFocusManagerComponent(o).focusEnabled &&
IFocusManagerComponent(o).mouseFocusEnabled &&
UIComponent(o).enabled) {
return o;
}
o = o.parent;
if (o == null) {
break;
}
}
return null;
} Sonst eine Idee dazu? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |