![]() |
|
||||||||||
|
|||||
|
Думаю там xml такого типа:
<tree>
<vetka pos="20"> //pos это позития с которой растёт ветка
<vetka pos="10"></vetka>
<vetka pos="5">
<vetka pos="3"></vetka>
<vetka pos="10"></vetka>
</vetka>
</vetka>
<vetka pos="30">
</vetka>
</tree>
Между прочим в динамических структурах данных финальный элемент дерева так и называется - лист. Кстати во флеше они есть? |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
Продолжу мысль. Там не одна xml, там многа-многа xmlей, потому что дерево каждый раз растет по другому. А флешка просто рандомно загружает одну из них. Возникает вопрос, что за редактор со страшным алгоритмом генерит дерево, и почему неразумный Скиннер не реализовал этот самый алгоритм во флеше, А?
) |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 164
|
Цитата:
))) Нет Вы что, это слишком просто, на самом деле там данные с кластера серверов собираются, каждый из которых генерирует по веточке. Так веточка к веточке и дерево получается... |
|
|||||
|
Несколько серверов, работающих как одно целое, грубо говоря.
insected отпустил сарказм, не обращайте внимания ![]() По теме: у скиннера явно не на XML, потому что каждый раз генерируется все по-разному, да и с ума сойдешь описывать все руками.
__________________
Дело не в тебе |
|
|||||
|
loading 50%
|
Чета мне сдается, что продукция этой фирмы прекрасно совместима с 6м плеером. (Это я к выбору раздельчика)
ХМЛ там не пользуют, да и шо оно даст? Как следует из текста на сайте, вся фишка в наличии и разработчиков компании доступа к библиотеке Application Elements. Кстати, зовут поучаствовать... Последний раз редактировалось aksios; 15.11.2008 в 11:12. |
|
|||||
|
http://www.demiart.ru/forum/index.php?showtopic=61956
Можно и на AS3 package {
import flash.display.*;
import flash.events.*;
dynamic public class TreeDoc extends Sprite{ ;//класс наследник спрайта
public var branchSize:Number;
public var branchCounter:int;
public var i:int;
public function TreeDoc() {//конструктор
// Параметры дерева
branchSize = 100;
branchCounter = 0;
new Branch(this, 300,300);
}
public function newBranch(_x:int, _y:int) {
branchSize = branchSize-0.1;
if (branchSize<10) branchSize =10;
for (i=0;i<Math.random()*40;i++)
if (branchCounter<100) new Branch(this, _x, _y);
}
}
}
import flash.display.*;
import flash.events.*;
class Branch extends MovieClip {
var doc:TreeDoc;
var endPosAr:Array;
var rad:Number, cosA:Number, sinA:Number;
var timeP:Array;
function Branch(_doc:TreeDoc,_x:int, _y:int) {
doc = _doc;
doc.addChild(this);
x = _x;
y = _y;
endPosAr = [0,0];
timeP = [0,0];
addEventListener(Event.ENTER_FRAME, enterFr);
}
function enterFr(evt:Event) {
graphics.lineStyle(doc.branchSize/20, 0x000000);//рисуем линию
graphics.moveTo(0, 0);// Устанавливаем начальные кординаты
// Если это не ствол, изменить угол и размер ветви
endPosAr=[doc.branchSize,0];
rotateForCentre([0, 0],endPosAr,Math.random()*180);
graphics.lineTo(endPosAr[0], endPosAr[1]);
this.removeEventListener(Event.ENTER_FRAME, enterFr);
doc.newBranch(x+endPosAr[0], y+endPosAr[1]);
doc.branchCounter++;
}
function rotateForCentre(_centrePoint:Array, _objectPoint:Array, _grad:int) {
rad = (_grad* (Math.PI/180));
cosA = Math.cos(rad);
sinA = Math.sin(rad);
//trace(_objectPoint[0])
timeP[0] = _objectPoint[0] - _centrePoint[0];//x
timeP[1] = _objectPoint[1] - _centrePoint[1];//y
_objectPoint[0] = _centrePoint[0] +
(timeP[0]*cosA + timeP[1]*sinA);
_objectPoint[1] = _centrePoint[1] +
(-timeP[0]*sinA + timeP[1]*cosA);
}
}
Последний раз редактировалось Alex Lexcuk; 15.11.2008 в 13:43. |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 11
|
извините за нубство, но вот ясохранил флешку с сайта и она работает на компе, значит наверно без xml все же? )
|
|
|||||
|
Регистрация: Jun 2006
Сообщений: 164
|
Нет там xml ) Скачайте исходники да посмотрите, что гадать то на кофейной гуще ? )
|
|
|||||
|
Схожесть 99%, только по клику не обновляется, чтоб обновить надо нажать на кнопку браузера обновить.
http://murmadillo.tut.su/fla/TreeDoc.swf package {
import flash.display.*;
import flash.events.*;
dynamic public class TreeDoc extends MovieClip{ ;//класс наследник спрайта
public var branchSize:Number;
public var branchCounter:int;
public var i:int;
public var flowersesArr:Array;
var sp:Sprite;
var j:int;
public function TreeDoc() {//конструктор
// Параметры дерева
branchSize = 10;
branchCounter = 0;
flowersesArr = [];
new Branch(this, 100,350);
}
public function newBranch(_x:int, _y:int, _r:int) {
branchSize = branchSize-0.015;
branchCounter++;
if (branchSize<1) {
branchSize =3;
}//for (i=0;i<Math.random()*40;i++)
//if (branchCounter<1000) new Branch(this, _x, _y);
//trace(branchSize);
if (branchCounter%int(Math.random()*100)==0||branchCounter==21) {
for (i=0; i<3; i++) {
new Branch(this, _x, _y, 360-Math.random()*720);
//trace('!'+branchCounter);
}
}
if (branchCounter<2000) {
new Branch(this, _x, _y, _r);
}
if (branchCounter>=2000) {
sp = new Sprite();
addChild(sp);
sp.graphics.beginFill(0x00ff00);
i=flowersesArr.length;
addEventListener(Event.ENTER_FRAME, enterFr);
}
}
function enterFr(evt:Event) {
for (j=0; j<10; j++) {
i = i-Math.random()*4;
if (i>0) {
sp.graphics.beginFill(0x0000ff,Math.random());
sp.graphics.drawCircle(flowersesArr[i][0],flowersesArr[i][1], 1+Math.random()*2);
sp.graphics.endFill();
}
}
}
}
}
import flash.display.*;
import flash.events.*;
class Branch extends MovieClip {
var doc:TreeDoc;
var endPosAr:Array;
var rad:Number, cosA:Number, sinA:Number;
var timeP:Array;
var r:int;
var color:uint;
function Branch(_doc:TreeDoc,_x:int, _y:int, _r:int = 1) {
doc = _doc;
doc.addChild(this);
x = _x;
y = _y;
r = _r;
endPosAr = [0,0];
timeP = [0,0];
addEventListener(Event.ENTER_FRAME, enterFr);
}
function enterFr(evt:Event) {
color = ((uint(doc.branchCounter*255/500) & 0xFF) << 16) | ((uint(30) & 0xFF) << 8) | (uint(doc.branchCounter*255/2000) & 0xFF);
if (doc.branchSize<3) {
graphics.lineStyle(doc.branchSize, color, 0.5);
} else {
trace(color.toString(16));
graphics.lineStyle(doc.branchSize, color, 0.9);
}
graphics.moveTo(0, 0);// Устанавливаем начальные кординаты
// Если это не ствол, изменить угол и размер ветви
endPosAr=[doc.branchSize*2,0];
rotateForCentre([0, 0],endPosAr,r++);
doc.flowersesArr.push([endPosAr[0]+x, endPosAr[1]+y]);
graphics.lineTo(endPosAr[0], endPosAr[1]);
this.removeEventListener(Event.ENTER_FRAME, enterFr);
doc.newBranch(x+endPosAr[0], y+endPosAr[1], r+(8-Math.random()*8));
//doc.branchCounter++;
}
function rotateForCentre(_centrePoint:Array, _objectPoint:Array, _grad:int) {
rad = (_grad* (Math.PI/180));
cosA = Math.cos(rad);
sinA = Math.sin(rad);
//trace(_objectPoint[0])
timeP[0] = _objectPoint[0] - _centrePoint[0];//x
timeP[1] = _objectPoint[1] - _centrePoint[1];//y
_objectPoint[0] = _centrePoint[0] +
(timeP[0]*cosA + timeP[1]*sinA);
_objectPoint[1] = _centrePoint[1] +
(-timeP[0]*sinA + timeP[1]*cosA);
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|