PDA

Просмотр полной версии : Создать таблицу во флеше.


goword
21.09.2008, 21:17
Что должно получится визуально, приложил.
Вопрос, как организовать чтение с xml данных, чтобы наиболее проще получить результат!
Речь идет о таблице "Цепь"

Mnilionic
21.09.2008, 21:27
наиболее проще сделать gif с прозрачным фоном и грузить его :)

goword
21.09.2008, 21:46
А если серьезно, что сложно?

zanull
21.09.2008, 22:14
сделай ячейки, сделай xml парси его и пиши данные в эти ячейки, что тут сложного, а на фон кинь эту картинку

goword
21.09.2008, 22:15
Так вот имеено, как сделать эти ячейки программно?

zanull
21.09.2008, 22:19
вот пример, дальше додумай:

function loadXML(loaded) {
if (loaded) {
_root.table1 = this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue;
table1_txt.text = _root.table1;
} else {
content = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("table.xml");



table1_txt - твоя ячейка

scarbo
21.09.2008, 22:21
Да,а дальше самое сложное,как раз начинается

zanull
21.09.2008, 22:24
что сложного? написать xml?

Mnilionic
22.09.2008, 01:02
как вариант на скорую руку с однострочными ячейками

table.xml

<table>
<col width="100" />
<col width="30" />
<tr>
<td>0.0</td><td>0.1</td>
</tr>
<tr>
<td>1.0</td><td>1.1</td>
</tr>
</table>


во флеше:


xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = loadXML;
xml.load("table.xml");

function loadXML(isloaded) {
if (isloaded) parse(this);
else trace('not loaded');
}
function parse(xml){
var table = xml.firstChild;
var cols = get_cols(table);
var trs = get_trs(table);
var data = get_tds(trs);
draw_table(data, cols);
}
function get_cols(table){
var cols = new Array();
var col = table.firstChild;
while( col.nodeName == 'col' ){
cols.push(col.attributes.width);
col = col.nextSibling;
}
return cols;
}
function get_trs(table){
var trs = new Array();
var tr = table.firstChild;
while( tr ){
if( tr.nodeName == 'tr') trs.push(tr);
tr = tr.nextSibling;
}
return trs;
}
function get_tds(trs){
var data = new Array();
for(var i = 0; i < trs.length; i++){
data[i] = new Array();
var td = trs[i].firstChild;
while( td ){
data[i].push(td.firstChild.nodeValue);
td = td.nextSibling;
}
}
return data;
}
function draw_table(data, cols){
var table = this.createEmptyMovieClip('mc_table', 1);
for(var i = 0; i < data.length; i++){
var w_cumulate = 0;
for(var j = 0; j < data[i].length; j++){
var w = cols[j];
var x = w_cumulate;
var cel = table.createTextField('cel'+i+j, table.getNextHighestDepth(), x, i*25, w, 25);
cel.text = data[i][j];
cel.border = true;
//
w_cumulate += Number(w);
}
}
}

капайтесь, размышляйте, настраивайте

wvxvw
22.09.2008, 01:17
Ну вы даете... а чем TextFormat.tabStops не подошел?
var source:String = "1.\tIntroduction\tpage\t1\r";
source += "2.\tTable of Contents\tpage\t2";
var tf:TextField = this.createTextField("tf", 0, 0, 0, 200, 200);
tf.multiline = true;
var tff:TextFormat = new TextFormat();
tff.tabStops = [20, 130, 170];
tf.setNewTextFormat(tff);
tf.text = source;

zanull
22.09.2008, 01:37
wvxvw! как вариант тоже классно

goword
22.09.2008, 13:29
Спасибо! Буду копаться....