내가하려는 일에 대한 배경 지식. 날짜를 표시 할 스타일리쉬 한 텍스트 필드가있는 사용자 정의 스킨이 있습니다. 날짜에 묶인 스타일러스 텍스트 필드를 클릭하면 날짜 회 전자가 나타납니다. datespinner 뒤에 나는 전체 화면을 덮을 필요가있는 스프라이트를 그리고 클릭을 감지하고 datespinner를 사라지게 할 수 있습니다.하나의 구성 요소에 대한 폭 또는 높이 가져 오기 오버라이드 -
이제 problem-
가져 오기 폭을 무시하거나 I 전체 화면을 채울 수 없었던 높이를 얻을 수 없음. 그러나이 작업을 수행 할 때 오버라이드에서 높이를 얻으므로 datespinner가 중단됩니다. 아무도 단 하나의 구성 요소를 재정의하고 다른 모든 구성 요소를 기본값으로 설정하는 방법을 알고 있는지 궁금합니다. 이것이 멍청한 질문처럼 보일 수도 있고 분명히 뭔가 빠져있을 수도 있다는 것을 알고 있습니다. 나는 거의 as3에 익숙하지 않습니다.
여기에 일부 코드는 완전하지 않지만 단지에서 내 포인트를 얻기위한 것입니다
override protected function createChildren():void {
super.createChildren();
if(!img) {
img = new dateButtonBG();
addChild(img);
}
if (!maskSprite) {
maskSprite = new Sprite();
maskSprite.graphics.beginFill(0xFFFFCC, .5);
maskSprite.graphics.drawRect(-((stage.height)/2),-((stage.width)/2), stage.width, stage.height);
maskSprite.graphics.endFill();
}
if(!dateButton) {
dateButton = new StyleableTextField();
todayDate = new Date();
BindingUtils.bindProperty(dateButton, "text", date, "selectedDate");
dateButton.addEventListener(MouseEvent.CLICK, onDateButtonClick);
addChild(dateButton);
}
invalidateDisplayList();
}
protected function removeSpinner(event:Event):void{
maskSprite.removeEventListener(MouseEvent.CLICK, removeSpinner);
removeChild(date);
removeChild(maskSprite);
}
protected function onDateButtonClick (event:Event):void {
addChild(maskSprite);
addChild(date);
maskSprite.addEventListener(MouseEvent.CLICK, removeSpinner);
}
override public function get width() : Number {
return _width;
}
override public function get height() : Number {
return _height;
}
을 코드 -입니다. 읽고 모든 도움을 주셔서 감사합니다.
편집 -
나는 어떤 사람이 같은 problem- 플렉스 컨테이너의 크기에 스프라이트의 크기 (또는 UI 구성 요소) 제한이 경우 it.Adding에게 약간의 정보를 수행하는 방법을 알아 냈어. 컨테이너의 크기를 넘 으려고하면 그냥 컨테이너의 크기를 반환합니다. 내 코드에서 -override public function get width() : Number {
return _width;
}
override public function get height() : Number {
return _height;
}
이것은 일반적으로 컨테이너의 크기를 넘기위한 고지로 선전됩니다. 그러나이 방법은 결함이 있습니다. 폭과 높이를 묻는 모든 것을 무시하기 때문입니다. 이 경우에는 _height 및 _width 크기의 모든 것을 만들려고합니다. 1 개 이상의 구성 요소가있는 스킨의 경우 큰 문제입니다. 개별적으로 항목의 크기를 설정할 수도 있습니다. 이는 나를 위해 작동하지 않거나 대체 방법을 찾지 못했습니다. 다음은이 그러나 충분하지 않을
public override function validateDisplayList():void {
super.validateDisplayList();
yourComponent.width = someConstantW;
yourComponent.height = someConstantH;
}
작품 - 것입니다. 이
override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void {
super.layoutContents(unscaledWidth, unscaledHeight);
setElementPosition(yourComponent, x, y);
}
는 다행스럽게도 필자는 저장 try- 사람을 용기의 외부 작업 : 그것은 당신이 코드는 매우 명확 게시 아니에요
이미 도움이되어 주신 것에 감사 드리며, 이미 updateDisplayList를 무시하고 있습니다.스프라이트를 컨테이너보다 크게 만들고 다른 모든 것을 같은 크기로 유지하려고합니다. 하지만 당신이 getPrefferredBoundWidth, Height로 올바른 경로에 나를 넣었을 것 같아요. – apaul