Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Доступ к переменной. (http://www.flasher.ru/forum/showthread.php?t=146362)

artur1995g 05.11.2010 15:16

Доступ к переменной.
 
Здравствуйте.

У меня есть класс Main. В нем я добавляю на поле 2 клипа: tracer и floor.

Так вот. tracer - падающее тело, для него прописал ускорение свободного падения и.т.д. Все это пописывал в самом КЛАССЕ Tracer. И еще есть объект floor. Это пол. Мне нужно сделать так, чтобы при ударе оп пол тело вело себя по правилам физики) Но для этого мне нужно.. нужно в классе Tracer обратиться к переменной floor класса Floor. ПОнятно, что использовать нужно hitTestObject.

Обе переменные tracer и floor заданы в Main классе.

Как мне быть?

bav 05.11.2010 15:36

Насколько я смог себе это представить, у вас наблюдается следующая картина:
Код AS3:

// Файл Tracer.as
package
{
  import flash.display.Sprite;
 
  public class Tracer extends Sprite
  {
    public function Tracer()
    {
 
    }
    public function floorRequest():void
    {
      trace(((parent as Main).floor as Floor).someProperty);
    }
  }
}
 
// Файл Floor.as
package
{
  import flash.display.Sprite;
 
  public class Floor extends Sprite
  {
    public var someProperty:int = 123;
    public function Floor()
    {
 
    }
  }
}
 
// Файл Main.as
package
{
  import flash.display.Sprite;
 
  public class Main extends Sprite
  {
    public var tracer:Tracer;
    public var floor:Floor;
 
    public function Main()
    {
      tracer = new Tracer();
      floor = new Floor();
      addChild(tracer);
      addChild(floor);
 
      tracer.floorRequest();
    }
  }
}


-De- 05.11.2010 15:42

ви тгавите
Код AS3:

// Файл Tracer.as
package
{
  import flash.display.Sprite;
 
  public class Tracer extends Sprite
  {
    public function Tracer()
    {
 
    }
    public function floorRequest(_floor:Floor):void
    {
      trace(_floor.someProperty, Main.instance.floor.someProperty);
    }
  }
}
 
// Файл Floor.as
package
{
  import flash.display.Sprite;
 
  public class Floor extends Sprite
  {
    public var someProperty:int = 123;
    public function Floor()
    {
 
    }
  }
}
 
// Файл Main.as
package
{
  import flash.display.Sprite;
 
  public class Main extends Sprite
  {
    public var tracer:Tracer;
    public var floor:Floor;
    public static var instance:Main;
 
    public function Main()
    {
      instance = this;
      tracer = new Tracer();
      floor = new Floor();
      addChild(tracer);
      addChild(floor);
 
      tracer.floorRequest(floor);
    }
  }
}


artur1995g 05.11.2010 15:43

Bav, спасибо, но нет)

Код AS3:

// Файл Tracer.as
package {
        import flash.display.*;
        import flash.events.*;
        public class Tracer extends MovieClip {
                var acceleration=0;
                public function Tracer() {
                        this.addEventListener(Event.ENTER_FRAME,handler_enterFrame);
                }
                function handler_enterFrame(e:Event):void {
                        this.y+=acceleration;
                        acceleration+=1;
                }
        }
}
 
// Файл Floor.as
package {
        import flash.display.*;
        public class Border extends Sprite {
                public function Border() {
 
                }
        }
}
 
// Файл Main.as
package {
        import flash.display.*;
        public class Main extends Sprite {
                public var chel:Tracer;
                public var floor:Border;
                public function Main() {
                        chel = new Tracer();
                        chel.x=550/2;
                        chel.y=0;
                        addChild(chel);
                        floor = new Border();
                        floor.x=0;
                        floor.y=400;
                        addChild(floor);
                }
        }
}

Вооот.

bav 05.11.2010 15:56

Да, вариант предложенный -De- выглядит более рациональным.
artur1995g, не забывайте указывать типы переменным. Также, имя файла должно совпадать с именем класса:
Код AS3:

var acceleration:int = 0;
// Файл Border.as
package {
        import flash.display.*;
        public class Border extends Sprite {
                public function Border() {
 
                }
        }
}


artur1995g 05.11.2010 16:02

Да. Спасибо.


Сейчас попробую разобраться

Добавлено через 8 минут
А на какой странице в Муке это описано? :D

bav 05.11.2010 16:57

Видимо, там, где описываются спецификаторы доступа к переменным.


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

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