동적으로 생성 된 탐색 '노드'를 클릭하면 변수의 현재 값을 전달하려고합니다. 이것은 정수가 될 필요가 있지만 마지막 노드의 값을 반환합니다. 값을 전달하기 위해 여러 가지 메서드를 시도했습니다. 사용자 지정 이벤트 수신기, 설정자,하지만 클로저에 문제가 있다고 생각합니다. 도움을 받으실 수 있습니다. ;-) 난 당신의 코드를 읽으려고하지 않을거야폐쇄 문제입니까? - 변수의 현재 값 전달
function callGrid():void {
for (var i:Number = 0; i < my_total; i++) {
var gridnode_url = my_grid[i][email protected];
var news_category= my_grid[i][email protected];
var newstitle = my_grid[i][email protected];
var news_content = my_grid[i]..news_content;
var news_image = my_grid[i]..news_image;
var gridnode_loader = new Loader();
container_mc.addChild(gridnode_loader);
container_mc.mouseChildren = false;
gridnode_loader.load(new URLRequest(gridnode_url));
gridnode_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, gridLoaded);
gridnode_loader.name = i;
text_container_mc = new MovieClip();
text_container_mc.x = 0;
text_container_mc.mouseEnabled = false;
var textY = text_container_mc.y = (my_gridnode_height+18)*y_counter;
addChild(text_container_mc);
var tf:TextSplash=new TextSplash(newstitle,10,0,4);
container_mc.addChild(tf);
tf.mouseEnabled = false;
tf.height = my_gridnode_height;
text_container_mc.addChild(tf);
var text_container_mc_tween = new Tween(text_container_mc, "alpha", Strong.easeIn, 0,1,0.1, true);
gridnode_loader.x = (my_gridnode_width+5) * x_counter;
gridnode_loader.y = (my_gridnode_height+15) * y_counter;
if (x_counter+1 < columns) {
x_counter++;
} else {
x_counter = 0;
y_counter++;
}
}
}
function gridLoaded(e:Event):void {
var i:uint;
var my_gridnode:Loader = Loader(e.target.loader);
container_mc.addChild(my_gridnode);
_xmlnewstarget = my_gridnode.name;
//||||||||||||||||||||||||||||||||||||||||
//when a particular grid node is clicked I need to send the current _xmlnewstarget value to the LoadNewsContent function...
//||||||||||||| ||||||||||||||||||||||||
my_tweens[Number(my_gridnode.name)]=new Tween(my_gridnode, "alpha", Strong.easeIn, 0,1,0.1, true);
my_gridnode.contentLoaderInfo.removeEventListener(Event.COMPLETE, gridLoaded);
my_gridnode.addEventListener(MouseEvent.CLICK, loadNewsContent);
}
function loadNewsContent(e:MouseEvent):void {
createNewsContainer();
getXMLNewsTarget();
news_category = my_grid[_xmlnewstarget][email protected];
var tfnews_category:TextSplash=new TextSplash(news_category,20,16,32,false,false,0xffffff);
tfnews_category.mouseEnabled = false;
newstitle = my_grid[_xmlnewstarget][email protected];
var tftitle:TextSplash=new TextSplash(newstitle,20,70,24,false,false,0x333333);
news_container_mc.addChild(tftitle);
tftitle.mouseEnabled = false;
news_content = my_grid[_xmlnewstarget]..news_content;
var tfnews_content:TextSplash=new TextSplash(news_content,20,110,20,true,true,0x333333,330);
news_container_mc.addChild(tfnews_content);
tfnews_content.mouseEnabled = false;
news_image = my_grid[_xmlnewstarget][email protected]_image;
loadNewsImage();
addChild(tfnews_category);
addChild(tftitle);
addChild(tfnews_content);
var news_container_mc_tween = new Tween(news_container_mc, "alpha", Strong.easeIn, 0,1,0.3, true);
news_container_mc_tween.addEventListener(Event.INIT, newsContentLoaded);
}
요약 :) * 변수가 아닌 Scopes *는 자바 스크립트에서 "폐쇄"되어 새로운 함수 선언 만 새로운 범위를 만들 수 있습니다. –
Greg에게 클로저 기능을 제공해 주셔서 감사합니다. 코드를 추가하고 형식 변환이 올바른지 확인한 다음 _xmlnewstarget 변수에 대한 설정자를 추가했습니다. 나는 완벽한 룰렛 바퀴를 만들었습니다! 값은 24130, 01432, 04312, 02143, 02143, 14302, 02143, 21403, 43021, 24310, 02143, 14302, 02143, 43021의 5 노드에 대해 변경됩니다. 마지막 값은 _xmlnewstarget ... – martin
의 값입니다. 결국 다른 경로로 정렬 할 수있었습니다. 각 뉴스 항목의 xml에 뉴스 ID를 추가하고이를 텍스트 컨테이너에 참조했습니다. - text_container_mc.id = my_grid [i]. @ id; 그런 다음 text_container_mc.addEventListener (mouseEvent.CLICK, loadNewsContent)를 사용하여 loadNewsContent로 바로 넘어갔습니다. 그 함수에서 e.target.id를 사용하여 텍스트 필드를 연결했습니다. - newstitle = my_grid [e.target.id]. @ newstitle; 이제 역 탐색을 정렬해야합니다.하지만이 문제는 정렬되어 있다고 생각합니다 .-) 감사합니다. – martin