Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Указатели или как вырастить дерево. (http://www.flasher.ru/forum/showthread.php?t=86137)

Svinja 08.10.2006 18:04

Указатели или как вырастить дерево.
 
Наверное этот вопрос задавали уже не один миллион раз. Есть ли в AS указатели аля Си, а то без них делать древовидные структуры, это Ад. Может в AS есть что-нить встроенное для создания деревьев, или указатели.

Хемуль 08.10.2006 21:02

2 Svinja:
Array...

Nirth 08.10.2006 21:06

2 Svinja
Object
указатели в ас не нужны. функции тоже объекты.

Svinja 09.10.2006 11:31

Как это понимать, напирмер у меня есть класс узла дерева, в котором я должен хранить указатель(?) на его потомка, я использовал имя, для однозначного указания на элемент, но это неправильно, потомучто приходилось глубоуо пробираться к этому элементу.
Код:

class MyClass
{
  private var FChild:Number;
 
  public function ShowChild()
  {
    _root['clip1']['clip2']['object'+this['FChild']].Show();
  }
}

надо по идее чот-то типа:

Код:

class MyClass
{
  private var FChild:*MyClass2;
 
  public function ShowChild()
  {
    this['FChild'].Show();
  }
}


wvxvw 09.10.2006 12:13

во втором варианте все в принципе нормально, только астерикс не надо =), ну и чтобы ShowChild() работала ее надо бы где-то вызвать...
а можно менее абстрактный пример? а то так немного сложно понять, что именно нужно, мб есть простое решение... просто не совсем понятна задача...

Svinja 09.10.2006 16:06

Вообще, программа перднацначена для доказательства сиквенций, путем построения семантических деревьев доказательств.

структура: к корню присоединено поле, в котором создаются мувики формул, каждый мувик формулы, хранит в себе отображение самой формулы(A&B->C,C|-A->B) и древовидную структуру этой формулы(для удобства автопроверок истинности). Для этого я создавал классы для каждой булевой функции(and,or,not, и тд) например класс конъюнкции:
Код:

class TKonjunction extends Object
{
  public var leftPart:Number;
  public var rightPart:Number;
       
  public function True(AA:Boolean,AB:Boolean,AC:Boolean,AD:Boolean,AE:Boolean,AF:Boolean):Boolean
  {
    return _root['pole']['sc'+_root['pole']['currSc']]['formula'+this['leftPart']].True(AA,AB,AC,AD,AE,AF) && _root['pole']['sc'+_root['pole']['currSc']]['formula'+this['rightPart']].True(AA,AB,AC,AD,AE,AF);
  }
       
  public function Show():String
  {
    return _root['pole']['sc'+_root['pole']['currSc']]['formula'+this['leftPart']].Show() + '&' + _root['pole']['sc'+_root['pole']['currSc']]['formula'+this['rightPart']].Show();
  }
}

Здесь два поля: левая часть конъюнкции и правая, но там хранятся номера элементов(!), а не указатели. И два рекурсивных метода(правда даже позороно называть их методами) проверки истенности(на вход подаем значения 6-ти переменных) и записи формулы в виде строки. Если б были указатели, то код измнеился бы так:
Код:

class TKonjunction extends TFormula
{
  public var leftPart:*TFormula;
  public var rightPart:*TFormula;
       
  public function True(AA:Boolean,AB:Boolean,AC:Boolean,AD:Boolean,AE:Boolean,AF:Boolean):Boolean
  {
    return this['leftPart']->True(AA,AB,AC,AD,AE,AF) && this['rightPart']->True(AA,AB,AC,AD,AE,AF);
  }
       
  public function Show():String
  {
    return this['leftPart']->Show() + '&' + this['rightPart']->Show();
  }
}


wvxvw 09.10.2006 16:42

эээ... если чесно, то хочется процитировать Барда Симпсона... 'my brain hurts'
А не проще ли было сделать конструкторы класса и передавать конструктору ссылку на нужный объект вместо того, чтобы писать _root['pole']['sc'+_root['pole']['currSc']]['formula'+this['leftPart']]? Или, что еще логичнее, создавать нужный объект в самом классе?
Хотя... я наверное чего-то не понимаю...
Можно только нескромный вопрос... это работает? Я не издеваюсь, мне действительно интересно...

Хемуль 09.10.2006 16:48

2 Svinja:
И ещё вопрос... Если не секрет, почему Флеш? ^_^

Svinja 09.10.2006 17:04

Все, что пока написано, работет. В саом классе создавать новые объекты нельзя, потомучто внешние объекты будут копироваться(дублироваться), и некоторые ссылки будут перенаправлятся. Работать с такого вида вложениями будет довольно сложно. Когда доделаю, могу выложить, но думаю человеку, не знакомому с предметом матЛога эта программа будет совершенно не понятна.

А почему Flesh: была поставлена задача написания такой программы, а я давно хотел разобраться в AS вот и хорошая возможность. Да и ваще я извращенец.

Хемуль 09.10.2006 17:11

Цитата:

Сообщение от Svinja
Да и ваще я извращенец.

^_^ LoL Уважаю... Я не так давно на флеше делал одну программу для флуда на форумах...


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

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