그래, 내가 어떻게했는지 모르겠다. 아마 AS3의 신이 코드를 작성한 직후에 버그가 없으면 나에게 화가 났을 것이다. 그러나 나는 아주 이상한 문제가있다. 세 개의 다른 버튼이 있고 서로 중첩되지 않으며 함수를 호출하는 마우스 클릭 이벤트 리스너가 있습니다. 이 3 개의 버튼 중 하나를 클릭 할 때마다 swf의 수명에서 이전의 모든 버튼을 더한 함수를 호출합니다. 솔직히 말해서 나는 이것이 어떻게 일어나고 있는지 전혀 모른다. 나는 충격을 받았다. 나는 충격을 느낀다. 어떻게 된 일인가? eventListeners에서 뭔가가 있습니까? 아마도 URLLoader와 함께 뭔가? 나도 몰라, 나는 모든 길을 걷어 봤고 나는 아무것도 없어. 그래서 나는 똑똑한 코더의 법정에 나 자신을 던진다. 당신 중 하나가 신사를 존경하고 신사는 내가 잘못하고있는 것을 알고있다. 가난한 코더의 영혼을 불쌍히 여겨라.ActionScript 3.0의 현재 함수와 이전의 모든 함수를 호출했습니다.
문서 클래스 파일Pastie
package {
import gs.TweenMax;
import gs.easing.*;
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
import flash.net.*;
import flash.external.ExternalInterface;
import FullScreenScrollBar;
public class Gessner extends MovieClip {
//====================================Declare Variables================================//
var objectsArray:Array = ["whatwedo_bkg", "whoweare_bkg", "howmuch_bkg", "needsome_bkg"];
var images:Array = [];
var instances:Array = [];
var imageInstances:Array = [];
var paginationButtons:Array =[];
//=====================================================================================//
private var xmlLoader:URLLoader = new URLLoader();
private var xmlData:XML = new XML();
//======================================================================================
public function initXML(e:Event) {
//======================================================================================
var target:String = e.currentTarget.name;
if (e.currentTarget.name == "recent_projects" || e.currentTarget.name == "whoweare") {
xmlLoader.addEventListener(Event.COMPLETE, onCompleteXML);
xmlLoader.load(new URLRequest("http://www.gessnerengineering.com/projects"));
} else if (e.currentTarget.name == "our_staff") {
xmlLoader.addEventListener(Event.COMPLETE, onCompleteXML);
xmlLoader.load(new URLRequest("http://www.gessnerengineering.com/profiles"));
}
//========================================================================
function onCompleteXML(e:Event):void {
//========================================================================
xmlData = new XML(e.currentTarget.data);
makePagination();
trace("onCompleteXML() target: " + target);
if (target == "recent_projects" || target == "whoweare") {
trace("loadProjectXML() got called from onCompleteXML();");
loadProjectsXML(0, xmlData);
} else if (target == "our_staff") {
loadStaffXML(0, xmlData);
}
}
//========================================================================
function makePagination():void {
//========================================================================
var pages:Number;
trace("makePagination() target: " + target);
if (target == "recent_projects" || target == "whoweare") {
pages = Math.ceil(xmlData.project.length()/13);
} else if (target == "our_staff") {
pages = Math.ceil(xmlData.profile.length()/13);
}
for (var i:Number = 0; i < pages; i++) {
var tmp:pageNum = new pageNum();
var startX:Number = -(((pages * 50) - 10)/2);
tmp.Id = i * 13;
tmp.x = startX;
startX += 50;
tmp.y = 0;
tmp.label.text = String(i+1);
tmp.buttonMode = true;
tmp.mouseChildren = false;
tmp.useHandCursor = true;
tmp.addEventListener(MouseEvent.CLICK, onChangePage);
Gessner(root).pages.whoweare_bkg.pagination.addChild(tmp);
paginationButtons.push(Gessner(root).pages.whoweare_bkg.pagination.getChildByName(tmp.name));
}
}
//========================================================================
function onChangePage (e:MouseEvent):void {
//========================================================================
if (target == "recent_projects" || target == "whoweare") {
trace("loadProjectXML() got called from onChangePage();");
loadProjectsXML(e.currentTarget.Id as Number, xmlData);
} else {
loadStaffXML(e.currentTarget.Id as Number, xmlData);
}
}
}
//======================================================================================
public function loadProjectsXML(startNum:Number, xmlData:XML):void {
//======================================================================================
removeAll();
var index:int = 1;
var endNum:Number = startNum + 13;
if (endNum > xmlData.project.length()) {
endNum = xmlData.project.length();
//trace("projectENDNUM" + endNum);
}
for(startNum; startNum < endNum; startNum++) {
var instance:String = "cont" + index;
var imageURL:String = "http://www.gessnerengineering.com/system/files/" + xmlData.project[startNum].assets.asset[0]["id"] + "/thumb/" + xmlData.project[startNum].assets.asset[0]["file-file-name"];
loadImage(imageURL, instance);
Gessner(root).pages.whoweare_bkg[instance].title.text = xmlData.project[startNum].name;
Gessner(root).pages.whoweare_bkg[instance].description.text = xmlData.project[startNum].description;
instances.push(instance);
index++;
}
}
//=======================================================================================
public function loadStaffXML(startNum:Number, xmlData:XML):void {
//=======================================================================================
removeAll();
var index:int = 1;
var endNum:Number = startNum + 13;
if (endNum > xmlData.profile.length()) {
endNum = xmlData.profile.length();
////trace("endNUM" + endNum);
}
for(startNum; startNum < endNum; startNum++) {
var instance:String = "cont" + index;
var imageURL:String = "http://www.gessnerengineering.com/system/avatars/" + xmlData.profile[startNum]["id"] + "/thumb/" + xmlData.profile[startNum]["avatar-file-name"];
loadImage(imageURL, instance);
Gessner(root).pages.whoweare_bkg[instance].title.text = xmlData.profile[startNum]["user-id"];
Gessner(root).pages.whoweare_bkg[instance].description.text = xmlData.profile[startNum]["bio"];
instances.push(instance);
index++;
}
}
//=======================================================================================
private function loadImage(imageURL:String, instance:String):void {
//=======================================================================================
var imageLoader:Loader = new Loader();
var imageRequest = new URLRequest(imageURL);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
imageLoader.load(imageRequest);
function onComplete(e:Event) {
var image:Bitmap = (Bitmap)(e.currentTarget.content);
Gessner(root).pages.whoweare_bkg[instance].thumb.addChild(image);
images.push(Gessner(root).pages.whoweare_bkg[instance].thumb.getChildByName(image.name));
imageInstances.push(instance);
//imageLoader.unload();
}
}
//=======================================================================================
private function removeAll():void {
//=======================================================================================
var lengthOfIndex:uint = instances.length;
/*for each(var button:DisplayObject in paginationButtons) {
Gessner(root).pages.whoweare_bkg.pagination.removeChild(button);
}*/
for (var i:uint = 0; i < lengthOfIndex; i++) {
Gessner(root).pages.whoweare_bkg[instances[i]]["title"].text = "";
Gessner(root).pages.whoweare_bkg[instances[i]]["description"].text = "";
try {
Gessner(root).pages.whoweare_bkg[imageInstances[i]].thumb.removeChild(images[i]);
} catch (ArgumentError) {
//trace("error: " + images[i].name + "::" + instances[i]);
}
}
paginationButtons.splice(0, paginationButtons.length);
images.splice(0, lengthOfIndex);
imageInstances.splice(0, lengthOfIndex);
instances.splice(0, lengthOfIndex);
}
}
문서의 타임 라인 작업
this.pages.whoweare_bkg.recent_projects.addEventListener(MouseEvent.CLICK, initXML);
this.pages.whoweare_bkg.our_staff.addEventListener(MouseEvent.CLICK, initXML);
this.whoweare.addEventListener(MouseEvent.CLICK, initXML);
출력Pastie
##first click
makePagination() target: whoweare
onCompleteXML() target: whoweare
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
##second click
makePagination() target: whoweare
onCompleteXML() target: whoweare
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
##third click
makePagination() target: whoweare
onCompleteXML() target: whoweare
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
##fourth click
makePagination() target: whoweare
onCompleteXML() target: whoweare
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
makePagination() target: recent_projects
onCompleteXML() target: recent_projects
loadProjectXML() got called from onCompleteXML();
projectENDNUM3
and so on and so on
Sweet Jebus! 감사합니다. 친구에게 56 개의 흔적이 있음을 알려 드리기 전에 답변을 읽어보십시오. 나는 IRC에 있었고 많은 Firefox 탭을 열었습니다. 그리고 당신은 그냥 따라 와서 그것을 볼 수 있습니다, 나는 때때로 당신은 두 번째 눈 쌍이 필요하다고 생각합니다. –