Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Balls, Balls and again Balls! (http://forum.oszone.net/showthread.php?t=264420)

Greshnick 16-07-2013 17:00 2185563

Balls, Balls and again Balls!
 
Доброго времени суток, Уважаемые форумчане! Возник вопрос по поводу реализации в коде повтора проигрыша анимации пузырков.

Код на ActionScript 3 выглядит следующим образом:


import com.greensock.*;
import flash.events.Event;
import com.greensock.TimelineMax;


var tl : TimelineMax = new TimelineMax();

var arr : Array = new Array;
var l : int = 0;

Balls();

function Balls() : void
{
for (l=0; l<500; l++)
{
arr[l] = new ball();
arr[l].x=Math.random()*stage.stageWidth;
arr[l].y=stage.stageHeight;

var inerTL : TimelineMax = new TimelineMax();

//arr[l].alpha=0;

inerTL.insert(TweenMax.to(arr[l], 1, {y:0, onComplete : onDelete, onCompleteParams : [arr[l]]}));
inerTL.insert(TweenMax.to(arr[l], 0.3, {alpha:1}));

addChild(arr[l]);

tl.append(inerTL, -(Math.random()*10));
}
}


function onDelete(e : MovieClip) : void
{
removeChild(e);
e=null;
}



tl.append(inerTL, -(Math.random()*10));
В глобальную линию анимации tl добавляются наши анимации движения шариков. Есть предположения может быть у данной функции есть какое нибудь событие onComplete в котором бы я вызывал новое исполнение функции Balls(); или можно реализовать как то по другому. Посоветуйте, как решить данную проблему. На всякий случай прикрепляю исходник. Заранее спасибо.

XPEHOMETP 17-07-2013 11:35 2185945

Вы там, это, по осторожнее с названием темы! А то у людей, посмотревших мультик про Бивиса и Баттхеда, при слове Balls возникают несколько не те ассоцияицы!

lxa85 17-07-2013 15:31 2186061

Greshnick, Action Script установить не удалось, т.ч. извините, здесь я не помощник.

Greshnick 18-07-2013 20:36 2186820

lxa85 да вроде сам разобрался. Только вот не нравится, одна вещь растет память когда идет новая итерация всплытия. хотя все шарики были до этого удалены из памяти и со сцены и созданы снова. Среда программирования Adobe Flash Professional CS5

Greshnick 18-07-2013 20:38 2186823

XPEHOMETP, да у меня у самого "ассацияицы" c одноименной игрушкой для Андройд. Может помните...

Iska 18-07-2013 21:46 2186878

Цитата:

Цитата Greshnick
хотя все шарики были до этого удалены из памяти »

Удаление объектов ещё не приводит к освобождению памяти. Память освободится, когда движок соизволит провести «сборку мусора».

К слову сказать, Microsoft таки добавила в конце концов в WSH/JScript метод «CollectGarbage()», принудительно запускающий процесс.

Попробуйте порыться в: Adobe Flash Professional CS5 Garbage Collector - Поиск в Google, может что и будет.

Greshnick 19-07-2013 10:24 2187081

Iska, lxa85, XPEHOMETP, не хотелось бы начинать новую тему. Но просто проект связан делаю и интерфес и кодирую логику в делфи. Вопрос в следующем. Делфи изучаю ну года 4 наверное. До сегодняшнего дня все время работал на access и знать не хотел никакие xml. Но изучив логику работы с xml и ее интеграцию и простоту использования как языками web-сферы так и прикладного. Решил проект создавать на xml т.к. в дальнейшем планирую сделать сайт на основе этой базы. Да и легко использовать на хостингах. php-скриптик + xml вот тебе готовый сервер для запросов к базе данных и легкая упаковка и использование прикладными программами созданными на делфи или С++, при локальном использовании на компе пользователя. Для парсинга xml использую стандартный xmlDocument уже разобрался и с созданием и добавлением дочерних ветвей в файл. Но вот удаление не могу понять как реализовать нашел на просторах интернета на другом форуме запись об удалении дочерней ветви но постановка задачи стоит что ветвь одна, а у меня их несколько и может доходить до 100 и более. И как удалить конкретно 5 или 30 ветвь в структуре не могу найти.
xml структура файла следующая:
<?xml version="1.0" encoding="utf-8"?>
<images>
<image id="1"></image>
<image id="2"></image>
<image id="3"></image>
<image id="4"></image>
....
</images>

код для удаления одной ветви выглядит следующим образом:

var
XML: IXMLDocument;
begin
//загружаю исходный xml файл
XML := LoadXMLDocument('Example1.xml');
//вот здесь происходит удаление ветви, когда их несколько удаляется только первая, а как удалить последующие?
XML.DocumentElement.ChildNodes.Remove(XML.ChildNodes['images'].ChildNodes['image'].AttributeNodes.Nodes['1']);
//сохранение результата в измененый xml файл
XML.SaveToFile('Exmple2.xml');
end;

Iska 19-07-2013 10:52 2187099

Greshnick, используйте XPath для получения потребного по порядку или по атрибуту элемента (пример на VBScript):
Код:

Option Explicit

Dim objXMLDocument
Dim objXMLElement

Set objXMLDocument = WScript.CreateObject("MSXML2.DOMDocument")

If objXMLDocument.load("E:\Песочница\0297\0001.xml") Then
        ' Элемент с указанным значением атрибута
        Set objXMLElement = objXMLDocument.selectSingleNode("/images/image[@id='3']")
        WScript.Echo objXMLElement.attributes.item(0).nodeValue
       
        'Третий элемент, нумерация с нуля!
        Set objXMLElement = objXMLDocument.selectSingleNode("/images/image[2]")
        WScript.Echo objXMLElement.attributes.item(0).nodeValue
       
        ' Удаляем элемент
        objXMLElement.parentNode.removeChild objXMLElement
       
        Set objXMLElement = Nothing
       
        ' Смотрим результат
        WScript.Echo objXMLDocument.xml
End If

Set objXMLDocument = Nothing

WScript.Quit 0

Пользование xml в качестве базы данных — весьма, весьма не лучший выбор с точки зрения производительности.

Greshnick 19-07-2013 12:17 2187150

Iska, все оказалось достаточно тривиально)))

procedure TForm1.Button6Click(Sender: TObject);
var
XML: IXMLDocument;
begin
XML := LoadXMLDocument('Example1.xml');

//вот получение необходимой мне ветви из списка. В данном случае я удаляю 4 элемент т.к. счет идет от 0.
XML.DocumentElement.ChildNodes.Remove(XML.DocumentElement.ChildNodes.Nodes[3]);

XML.SaveToFile('Exmple2.xml');
end;

База полностью на xml не будет основана xml используется для хранения портфолио людей. Т.к. ACCESS и flash я как то не думал их связывать. Т.е. у нас есть флешка в которой ярко и красочно сделано оформление портфолио. Во флешку при помощи ExternalCall я передаю путь и имя xml файла для подключения. Флеш принимает и строит список людей и выводит из базы данные в компоненты. Основной удар будет на access т.к. там будут расчеты различных показателей.


Время: 11:32.

Время: 11:32.
© OSzone.net 2001-