이에 대한 몇 가지 게시물을 읽은 후 많은 것을 배웠고 이제 이를 여러분 모두와 공유하고 싶습니다.
Flash는 이제 단지 표시 기능일 뿐입니다. 그 과정에서 다른 사람들의 내용을 읽고 페이징을 구현하는 방법이 매우 간단한 것 같다고 느꼈습니다.
기본적으로 xml을 이용하여 전송됩니다.
List 컴포넌트와 DataGrid 모두 표시에 사용할 수 있습니다. 여기서는 컴포넌트를 사용하기가 너무 번거롭다고 생각하여 동적 텍스트를 사용합니다.
그래서 멍청한 방법을 썼는데 다른 방법이 없어 더 좋은 방법을 못 찾았네요~~~
아래 코드의 list[..]는 동적 텍스트의 이름으로, 한번에 15개의 항목이 표시됩니다.
//표시 프로그램은 다음과 같습니다.
//프레임 이름 "list"
멈추다();
var logList = 새로운 XML();
var 로그루트;
var 페이지:번호 //현재 페이지
var Tpage:Number; //전체 페이지 저장
var Tnum:Number; //총 로그 수
var logname:String; //로그 카테고리 이름;
vartemp;
var i:Number;
//여기에서는 해당 ID 번호를 저장하기 위해 배열을 사용합니다. 컴포넌트를 사용하면 그렇게 번거로울 필요가 없습니다.
var ids = new Array(15);
//페이지 넘기기용 버튼 2개
bn_u.enabled = 거짓;
bn_d.enabled = 거짓;
if (페이지 == null 또는 페이지<1) {
페이지 = 1;
}
//----------------
//함수 지우기;
함수 myclear() {
(i=1; i<16; i++) {
ids[i-1] = 0;
목록["lbn"+i]._visible = false;
list["ltitle"+i].text = "";
목록["lauthor"+i] = "";
목록["ltime"+i] = "";
}
}
//----------------------------
//----------------------------
myclear();
pageInfo.text = "데이터를 읽는 중...";
logList.ignoreWhite = true;
logList.load("Tree_list.asp?log_cat="+cat_id+"&page="+page);
//------------------------------------------------
//데이터 가져오기 함수
함수 logFunc(e) {
만약 (e) {
로그루트 = logList.firstChild;
로그 이름 = logroot.attributes.logname;
Tpage = logroot.attributes.Tpage;
Tnum = logroot.attributes.Tnum;
임시 = logroot.firstChild;
list.ltitle1.text = Ftitle(temp.firstChild.nodeValue, 22);
list.lauthor1 = temp.attributes.author;
list.ltime1 = temp.attributes.Addtime;
ids[0] = temp.attributes.id;
나는 = 1;
list.lbn1._visible = true;
//노드를 읽는 루프
동안(temp.nextSibling != null) {
온도 = temp.nextSibling;
나++;
//다른 방식으로 표시된다면 변경하면 됩니다.
ids[i-1] = temp.attributes.id;
목록["lbn"+i]._visible = true;
list["ltitle"+i].text = Ftitle(temp.firstChild.nodeValue, 22);
목록["lauthor"+i] = temp.attributes.author;
목록["ltime"+i] = temp.attributes.Addtime;
}
pageInfo.text = logname+"총 로그"+Tnum+"총 기사"+Tpage+"현재 페이지는 "+page+"페이지"+"15/페이지"입니다.
bn_u.enabled = true;
bn_d.enabled = true;
} 또 다른 {
pageInfo.text = "현재 로그가 없습니다.";
list.ltitle1.text = "데이터 읽기 오류입니다. 관리자에게 문의하세요!";
}
}
//제목이 너무 길지 않을까 걱정되는 사용자 정의 형식 제목 함수
함수 Ftitle(s, n) {
if (길이(들)>n) {
s = s.substring(0, n-1)+"...";
}
반환 s;
}
logList.onLoad = logFunc;
//-------------------------
//버튼 동작
Bn_up = new Object();
//버튼 이벤트, 페이지 크기가 값을 초과하는지 확인
Bn_up.click = 함수(evt) {
만약 (페이지>1) {
_root.page--;
gotoAndPlay("사이클");
} 또 다른 {
멈추다();
}
};
Bn_d = 새로운 객체();
Bn_d.click = 함수(evt) {
if (페이지<Tpage) {
_root.page++;
gotoAndPlay("사이클");
} 또 다른 {
멈추다();
}
};
bn_u.addEventListener("클릭", Bn_up);
bn_d.addEventListener("click", Bn_d);
"cycle"에는 한 단어만 있습니다.
gotoAndPlay("목록");
//간단한 루프
Tree_list.asp를 구성합니다.
//log는 내 로그 테이블이고, log_cat은 분류 테이블 아래의 ASP입니다.
<?xml version="1.0" 인코딩="gb2312"?>
<%
Response.ContentType = "텍스트/xml"
Response.CacheControl = "캐시 없음"
Response.AddHeader "Pragma", "no-cache"
응답.만료 = 0
희미한 log_cat, 페이지, 페이지 크기, Tnum, Tpage, log_name
page=TreeRequest("페이지",1)
log_cat=TreeRequest("log_cat",1)
페이지 크기=15
callTree_rs
log_cat=0 또는 log_cat=""인 경우
sql="write_time DESC,log_ID DESC를 기준으로 로그 순서에서 * 선택"
또 다른
sql="select * from log,log_cat, 여기서 log.cat_id=log_cat.ID 및 cat_id="&log_cat&" 순서는 write_time DESC,log_ID DESC"
다음과 같은 경우 종료
rs.open SQL,콘,1,1
rs.PageSize=페이지 크기
Tnum=rs.RecordCount
Tpage=Int(Tnum/pageSize*-1)*-1
page=""이면 page=1인 경우
Tnum<>0이면 rs.AbsolutePage=page
log_cat=0 또는 log_cat=""인 경우
log_name="[모든 카테고리]"
또 다른
log_name="["&rs("cat_name")&"]"
다음과 같은 경우 종료
'다음 출력 xml
'------------------------------------------------
response.write("<트리 로그 이름='"&log_name&"' Tnum='"&Tnum&"' Tpage='"&Tpage&"'>")
만약 rs.eof라면
RS.닫기
또 다른
rs.eof 및 pageSize>0이 아닌 동안 수행
response.write("<Trees 작성자='"&rs("log_author")&"' Addtime='"&rs("writer_time")&"' id='"&rs("log_ID")&"'>")
response.write("<![CDATA["&rs("log_tittle")&"]]></Trees>")
페이지 크기=페이지 크기-1
rs.movenext
고리
RS.닫기
다음과 같은 경우 종료
//rs 닫기
callTree_rsclose
callTree_conclose
response.write("</Tree>")
%>
코드가 매우 지저분한 것 같습니다. 위 내용에 버그가 있으면 알려주세요
. 출처: www.flashbank.cn