내 Flex 4.6 웹 응용 프로그램에서 주로 불꽃 구성 요소를 사용하지만 mx 구성 요소도 있습니다 (PopUpButton 소스 코드가 아래에 있습니다).PopUpButton 확장 및 Flex 4 웹 응용 프로그램에서 사용
사용자가 해당 버튼에 문제가 있음을 알리지 만 몇 주 후에는 재생산 할 수 없습니다. 들에 의해에 연결된 메뉴을 : 목록을하지만 아무것도 변경되지 않았습니다
나는 MX를 교체 시도했습니다. "null 포인터 예외"또는 다른 오류가 발생하여 자신을 테스트 할 때 적중을하지 않을 것으로 의심됩니다 ...
내 질문 : 내 맞춤 검색 버튼에 대한 경고가 방법은 사적이거나 존재하지 않을 것인가?
은 아무도 이유를 발견시겠습니까?
내 주요 App.mxml :
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:comps="*">
<fx:Script>
<![CDATA[
_auxBtn.update(obj.aux);
......
_auxBtn.disable();
]]>
</fx:Script>
<comps:AuxButton id="_auxBtn" enabled.normal="false" enabled.ingame="false" aux="handleAux(event)" />
내 사용자 정의 버튼 AuxButton.mxml :
<?xml version="1.0" encoding="utf-8"?>
<mx:PopUpButton
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
popUp="{_list}"
initialize="init(event)">
<fx:Metadata>
[Event(name="aux", type="PrefEvent")]
</fx:Metadata>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
import mx.utils.ObjectUtil;
import spark.components.List;
private const EXACT:String = 'Своя игра';
private const REVEAL:String = 'Показать';
private var _str:String;
[Bindable]
private var _data:ArrayCollection = new ArrayCollection();
[Bindable]
private var _list:List = new List();
private function init(event:FlexEvent):void {
_list.dataProvider = _data;
_list.addEventListener('click', handleList);
addEventListener('click', handleClick);
}
public function update(aux:Array):void {
var found:Boolean;
// nothing has changed
if (ObjectUtil.compare(_data.source, aux, 0) == 0)
return;
if (aux == null || aux.length == 0) {
disable();
return;
}
_data.removeAll();
for each (var obj:Object in aux) {
_data.addItem(obj);
if (!_str) {
if (EXACT == obj['label']) {
_str = obj['event'];
label = obj['label'];
found = true;
} else if (REVEAL == obj['label']) {
_str = obj['event'];
label = obj['label'];
found = true;
}
} else if (_str == obj['event']) {
found = true;
}
}
if (!found) {
_str = _data[0].event;
label = _data[0].label;
}
enabled = true;
}
private function handleList(event:MouseEvent):void {
var index:int = _list.selectedIndex;
if (index >= 0 && index < _data.length) {
_str = _data[index].event;
label = _data[index].label;
}
close();
}
private function handleClick(event:MouseEvent):void {
dispatchEvent(new PrefEvent(PrefEvent.AUX, _str));
disable();
}
public function disable():void {
_data.removeAll();
enabled = false;
_str = null;
label = '';
}
]]>
</fx:Script>
</mx:PopUpButton>
코드를 새 프로젝트에 복사했지만 경고 메시지가 표시되지 않았습니다. 내가 게시 한 코드에 문제가 있다고 생각하지 않습니다. 경고가 사라질 때까지 앱의 덩어리를 제거하려고 했습니까? 문제가 실제로 어디에서 발생했는지 추적하는 데 도움이 될 수 있습니다. –
경고 메시지가 가짜 일 수도 있습니다. 프로젝트에서 "깨끗한"작업을 수행 한 후에 많은 이상한 일들이 사라졌습니다. –