Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 26.05.2002, 19:18
Pietrovich вне форума Посмотреть профиль Отправить личное сообщение для Pietrovich Найти все сообщения от Pietrovich
  № 1  
Pietrovich
 
Аватар для Pietrovich

Регистрация: Apr 2001
Адрес: Z-town
Сообщений: 677
Отправить сообщение для Pietrovich с помощью ICQ
По умолчанию ООП и ООП воФлеш... это что две большие разницы?!

Задача:
//ну типа дипломная работа (и это на кафедре которая к программированию никак не отностися, разве что на одном с ними ФАКультете !!!)
написать программу, иллюстрирующую работу РТК (типа Роботизированный Технологический комплекс),
с возможностью рассчета оптимального алгоритма работы (в рамках технологической последовательности обработки детали) и моделирования в риалтайме работы РТК....

загвоздки:
1. структура РТК задается методом драг-енд-дропа, т.е. изначально не известно что попытается задать юзер
2. писать под РТ да еще и с анимацией... короче кроме флеша я ничего более удобного не нашел

алгоритмы я уже написал, правда проверялись на Паскале, т.е. математика уже есть, осталось перебить ее на ФЛЕШ (желательно 5 или 6)

Вот тут и начинаются проблемы!!!!

кусок кода на паскале (описание типов, чисто тестовый код для проверки алгоритмов)
=======================================================
type
_flags = object
working :boolean;
finished :boolean;
empty :boolean;
finishtime :integer;
end;

_tools = object (_flags)
origin :string;
zCounter :byte;
WorkTime :integer;
MoveTo :integer;
Install :integer;
Insert :integer;
Eject :integer;

procedure TstartNewJOB;
procedure TfinishJOB;
procedure Tejecting;
procedure TpassTime;
end;

_robot = object (_flags)


worktime :integer;
count :byte; {count of serving tools}
point :array [0..20] of _tools;
moveTable :array [0..20,0..20] of integer;
outs :array [0..100] of integer;
sJob :boolean;
outCounter :byte;
inCounter :byte;
timer :integer;
position :byte;
zID :byte; {etap obrobki detali}
target :byte;
unloading :byte;
loading :byte;

procedure rPassTIME;
procedure rInit;
function rFindTarget:byte;
procedure rStartNewJOB(startTarget:byte);
procedure rDieHard;
end;

=======================================================

обратите внимание на свойство point у типа _robot это список обслуживаемых роботом железяк (станки конвеееры и т.п.)
для решения данной задачи выгодно разбить сложный многороботный РТК на кучку простых - однороботных
т.е. я создаю объект робот1 2,3, ... и т.д. который собственными методами решает свои задачи, остается только синхронизировать работу всех роботов...

при попытке сделать то-же самое на Флешевых объектах происходит грандиозный облом:

Код:
		//описание первых 2х типов пропускаю, методов тоже...
	_tools =
		{
			outFile		:null,
			working		:false,
			finished	:false,
			empty		:false,
			finishTime	:null,
			origin		:null,	//string
			zCounter	:null,	//byte
			WorkTime	:null,	//integer
			MoveTo		:null,	//integer
			tInstall	:null,	//integer
			tInsert		:null,	//integer
			tEject		:null,	//integer
			TstartNewJob 	: 	function ()
							{
								this.finished = false;
								this.workinf=true;
								this.finishtime = this.workTime;
								this.empty=false;
								this.zCounter++;
							},
			TfinishJob		: function ()
							{
								this.finished=true;
								this.working=false;
								this.finishTime=0;
								this.empty=false;
							},
			TEjecting		: function ()
							{
								this.finished=false;
								this.working=false;
								this.finishtime=0;
								this.empty=true;
							}
		}

	_robot =
			{
	         	WorkTime	:null, //integer
			    count		:null, //byte количество обслуживаемых единиц оборудования
			    point		:new array(), //вариант new Array(_tools) вообще не проходит...
			    moveTable	:new array([null],[null]),
			    outs		:new array(null),
			    sJob		:null,	//boolean
			    outCounter	:null,	//byte
			    inCounter	:null, //byte
			    timer		:null,	//integer
			    cPosition	:null, //byte
			    zID			:null, //byte, etap obrobki detali
			    rTarget		:null, //byte
			    unloading	:null, //byte
			    loading		:null, //byte
			}
	// теперю попітаемся проверить что получилось:
	robot1 = new Object(_robot);
	robot2 = new Object(_robot);

	//трабл первый и не последний
	robot1.count = "robot 1"; //пофиг типы. главное - трабл
	robot2.count = "robot 2";
	trace (robot1.count);

	!!!!!!!!!!!!!!!!!!!!!!
	 видим robot 2

	 та что? robot1 b robot2 не разные объекты ?!
	 причем появляется еще и хитрый _robot который ==  robot2 :((


	 мне нужны отдельные, полностью независымые экземпляры, а вместо них я получаю тупые ссылки на прототип :((
	 можно решить эту проблему ???

	 в принципе устрит и вариант каждый новый объект генерить с нуля, но как тогда задавать имена этих объектов??? 

	 //трабл 2
	 или как залабать массив объектов ??? 

	 qqq = new Array(_tools);

	 и обращения типа
	 qqq[2].origin="станок" не проходят :(

	 а вариант типа

	 mA = new Array();
	 t = new Object(_tools);
	 t.origin="sdfsdfs";
	 mA[1]=t;
	 t.origin="wete;lrjoyjthjltyhltjholjtojhtoyh";
	 mA[2]=t;
	 приводит  к траблу №1, т.е. mA[1].origin== "wete;lrjoyjthjltyhltjholjtojhtoyh" :(
хелп!!! может я чего-то не понимаю, но ООП чуть-чуть отличается от простого расставления "."

З.Ы. в принципе я могу использовать и мувики вместо математической модели, но тогда прога так тормозит... (
__________________
ушел в ruFlash...

Старый 27.05.2002, 14:02
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 2  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Цитата:
мне нужны отдельные, полностью независымые экземпляры, а вместо них я получаю тупые ссылки на прототип (
потому как надо:

robot1 = new _robot()
robot2 = new _robot()

Цитата:
или как залабать массив объектов ???
qqq = []
tools = new Tools()
qqq.push (tools)
qqq[0].origin="станок"

- в подробности твоего скрипта не вдавался, но примерно так...

Старый 27.05.2002, 14:05
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 3  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
на будущее:
не пугай людей тоннами скрипта.
попробуй свести задачу к очень конкретному вопросу.
потому как разбирать две тонны кода никому не прет

Старый 27.05.2002, 14:16
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 4  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
аа.. проворонил...
надо еще задавать так:
_tools = function (){
описываем
}

и то же самое с _robot

а почитать на эту тему можно здеся скачать

Создать новую тему   Часовой пояс GMT +4, время: 12:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.