Показать полную графическую версию : Balls, Balls and again Balls!
Greshnick
16-07-2013, 17:00
Доброго времени суток, Уважаемые форумчане! Возник вопрос по поводу реализации в коде повтора проигрыша анимации пузырков.
Код на 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
Вы там, это, по осторожнее с названием темы! А то у людей, посмотревших мультик про Бивиса и Баттхеда, при слове Balls возникают несколько не те ассоцияицы!
Greshnick, Action Script установить не удалось, т.ч. извините, здесь я не помощник.
Greshnick
18-07-2013, 20:36
lxa85 да вроде сам разобрался. Только вот не нравится, одна вещь растет память когда идет новая итерация всплытия. хотя все шарики были до этого удалены из памяти и со сцены и созданы снова. Среда программирования Adobe Flash Professional CS5
Greshnick
18-07-2013, 20:38
XPEHOMETP, да у меня у самого "ассацияицы" c одноименной игрушкой для Андройд. Может помните...
хотя все шарики были до этого удалены из памяти »
Удаление объектов ещё не приводит к освобождению памяти. Память освободится, когда движок соизволит провести «сборку мусора».
К слову сказать, Microsoft таки добавила в конце концов в WSH/JScript метод «CollectGarbage()», принудительно запускающий процесс.
Попробуйте порыться в: Adobe Flash Professional CS5 Garbage Collector - Поиск в Google (https://www.google.ru/search?q=Adobe+Flash+Professional+CS5+Garbage+Collector), может что и будет.
Greshnick
19-07-2013, 10:24
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;
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
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 т.к. там будут расчеты различных показателей.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.