여기에 바인드 가능한 변수가 잘못 사용되고있을 가능성이 있으므로 여기서 시도해보십시오.AS3에서 바인드 가능한 변수에 대한 질문
사람들이 항목 중 하나를 클릭하여 배경을 선택할 수있는 간단한 스파크 목록이 있습니다. 배경이 선택되면 나중에 사용자가 응용 프로그램을 나중에 다시로드 할 때이를 사용하기 위해 SharedObject에 저장합니다. 로 만들어
이리스트가있는 ArrayCollection (바인더 제본 변수)에 의해 채워지는 다음과 같습니다
[Bindable] private var arrBG:ArrayCollection = new ArrayCollection();
이를 다음 채워됩니다 다음과 같은 방법 :
var objImage:Object;
var strSharedObjImage:String = sharedObj.sharedBackground.data.backgroundIndex;
// Background
objImage = new Object();
objImage.icon = ICONS_PATH + objImage.label;
objImage.label = "Titanium";
objImage.selected = (strSharedObjImage == objImage.fileName) ? true : false;
arrBG.addItem(objImage);
objImage = new Object();
objImage.icon = ICONS_PATH + objImage.fileName;
objImage.label = "Iron";
objImage.selected = (strSharedObjImage == objImage.label) ? true : false;
arrBG.addItem(objImage);
내가 다음에하는 dataProvider로 사용 내 스파크리스트.
위의 내용을 확인한 경우 내 공유 객체의 값이 "label"속성의 값과 같으면 내 객체에 selected라는 속성이 있습니다.이 속성은 true로 설정됩니다. 내 스파크 목록의 아이템 렌더러에
, 나는 다음과 같은 한 :<s:ItemRenderer name="HorizontalListSkin"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
autoDrawBackground="false"
creationComplete="initMenuSkin(event)"
>
<fx:Script>
<![CDATA[
protected function initMenuSkin(event:Event):void
{
iconImage.source = data.icon;
iconText.text = data.label;
// Check to see if the item we're displying is selected. If it is make it stand out
if(data.selected){
iconText.setStyle("color", "Green")
}
}
]]>
</fx:Script>
<s:VGroup x="10" y="10" width="50" height="50" buttonMode="true" horizontalAlign="center">
<s:Image id="iconImage" horizontalCenter="0"/>
<s:Label id="iconText" fontFamily="Verdana" fontSize="11" fontWeight="bold" horizontalCenter="0" showTruncationTip="false"/>
</s:VGroup>
</s:ItemRenderer>
을 당신이 볼 수 그래서, 나는 단순히 내 선택 항목에 글꼴의 색상을 변경하고 있습니다.
로드 할 때 이전에 선택한 항목이 녹색으로 표시되고 새 항목을 선택하면 대신 녹색으로 표시됩니다.
분명히 여기에 큰 차이가 있습니다. 위의 설명에 아무 것도 없기 때문에 이론상 바인딩 가능한 변수를 업데이트하는 것에 대해 언급했기 때문에 그것이 내 스파크 목록에 전파됩니다. (바인딩 가능한 변수가되면 항목을 동시에 업데이트 할 것이라고 생각합니다. 내 목록에 (?)).
음, 몇 가지 다른 방법으로 시도했지만 디버거에서 배열이 업데이트되었다고하지만 내 목록이 전혀 업데이트되지 않고 다른 항목 만 표시됩니다 화면을 닫고 다시 열면 녹색으로 표시됩니다. (모두 다시 불러 오면)
위에서 설명한 전체 논리가 함수 내에 포함되어 있기 때문에 트리거 한 배경 목록에서 항목을 선택할 때마다 선택한 "배경"을 알기 위해 모든 로직을 적용 할 "loadBackgrounds"메서드와 변수가 내 스파크 목록에 바인딩되어 있기 때문에 목록을 업데이트하려고합니다. 것은, 그렇지 않습니다.
내가 뭘 잘못하고 있니? 나는 완전히 단호한 태도를 취하고 있으며 이것을하는 훨씬 쉬운 방법이 있지만 나는 그것을 볼 수 없다.
여기에 도움을 주시면 감사하겠습니다.
미리 감사드립니다.
이있을 때마다 트리거 속성을 커밋이 렌더러하지 초기화에 속성을 커밋 사용하고, 항목을 무작위로 반환합니다. 비록 내가 아이템 렌더러를 사용할 때 무작위 방식으로 아이템을 반환하는 것처럼 보입니다. 그래서 여기에 코드도 추가하고 있습니다. –
좋아요, 당신이 지금 묻고있는 것을보고 내 대답을 업데이트 한 것 같아요 –
오늘 밤에 확인하고 다시 연락 할게요.하지만 내 문제는 무엇인지 잘 들리 네요. 오늘 나중에 너에게 돌아갈거야. 건배 –