Суббота, 23 Ноября 2024, 03:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
доступ к обьектам на сцене из As файла.
ggmanДата: Понедельник, 20 Февраля 2012, 17:56 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Понемногу перехожу на работу во внешних AS файлах.
На сцене есть объект. Когда я пробую что-то с ним сделать из внешнего файла, получаю сообщения об ошибках.
Как правильно обращаться к обьекту на сцене из AS файла?
iLORdДата: Понедельник, 20 Февраля 2012, 18:43 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Используй getChildByName();
В частности, у меня довольно часто гуй лежит прямо на сцене, а работаю я с ним из внешнего .as. Выглядит это так:

public var gui;
gui = MovieClip(root).getChildByName("ololoGui");

И дальше уже можно просто обращаться к любым внутренним объектам просто через gui.*


Bread Games - пилим ураганный экшен!
ggmanДата: Понедельник, 20 Февраля 2012, 21:28 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Спасибо. А переменная gui какого типа?

------

Что-то компилятору слово root не нравиться.


Сообщение отредактировал ggman - Понедельник, 20 Февраля 2012, 21:33
iLORdДата: Понедельник, 20 Февраля 2012, 21:42 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Quote (ggman)
А переменная gui какого типа?

А я не задавал тип явно, компилятор сам разбирается)

Quote (ggman)
Что-то компилятору слово root не нравиться.

Должен нормально воспринимать, по идее. Может дело в том, как у меня символы раскиданы, попробуй напрямую getChildByName сделать.


Bread Games - пилим ураганный экшен!
ggmanДата: Понедельник, 20 Февраля 2012, 22:09 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Не работает, теперь пишет про вызов неопределенного типа. бред какой-то, а если убрать root то пишет о том что неправильное количество елементов. С root же пишет что : "обращение несуществующего свойства root".
Может я что-то подключить забыл?

Вот все подключенные библиотеки:
import flash.events.Event;
import flash.utils.Timer;
import Storm.SAchievement;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.Stage;
import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;


Сообщение отредактировал ggman - Понедельник, 20 Февраля 2012, 22:10
iLORdДата: Понедельник, 20 Февраля 2012, 22:43 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Quote (ggman)
а если убрать root то пишет о том что неправильное количество елементов.

Эм... Просто убрал рут? Я имел в виду, что просто вот так написать: gui = getChildByName("ololoGui");


Bread Games - пилим ураганный экшен!
ggmanДата: Понедельник, 20 Февраля 2012, 23:48 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Я же говорю, если написать так, то будет вызов неопределенного типа.
iLORdДата: Понедельник, 20 Февраля 2012, 23:50 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Шайтан... Иерархия во Флеше всегда была моим слабым местом. Чуть попозже попробую посмотреть, что у меня там ещё есть... Хотя, вроде, всё должно работать и так(

Bread Games - пилим ураганный экшен!
knebuДата: Вторник, 28 Февраля 2012, 19:19 | Сообщение # 9
был не раз
Сейчас нет на сайте
обращение к обьекту из внешнего АS происходит через слово this,как я понял.вот я например хотел сделать себе АS,который управлял бы Keyboard,скросостью и ускорением,и чтоб можно было просто подключать его к своему спрайту(машине) в fla,но када компилю ниче не происходит,были ошибки,но я их исправил,терь ошибок нет,но всеравно ниче не происходит cry
а если напрямую вписать код в fla,то все работает.странно блин.мож имеет значение такие вещи,как static и dynamic?

Добавлено (28.02.2012, 19:16)
---------------------------------------------

Code
package  {
   
  import flash.events.KeyboardEvent;
  import flash.events.Event;
  import flash.display.Stage;
  import flash.ui.Keyboard;
  import flash.display.MovieClip;
   
  public class KeyboardTank extends MovieClip {

   public var keyPressed:uint;
   public var rightKeyIsDown:Boolean;
   public var leftKeyIsDown:Boolean;
      public var speed:Number = 5;
    
   public function KeyboardTank():void {
    // constructor code
   rightKeyIsDown = false;
   leftKeyIsDown = false;
    
     this.addEventListener(KeyboardEvent.KEY_DOWN,pressKey);
  this.addEventListener(KeyboardEvent.KEY_UP,releaseKey);
  this.addEventListener(Event.ENTER_FRAME,moveTank);
  }
  public function pressKey(e:KeyboardEvent):void{
   keyPressed = e.keyCode;
   if(keyPressed == Keyboard.D){
    rightKeyIsDown = true;
   }
         if(keyPressed == Keyboard.A){
    leftKeyIsDown = true;
   }
   
  }
  public function releaseKey(e:KeyboardEvent):void{
   var thisKey:uint = e.keyCode;
   if(thisKey == Keyboard.D){
    rightKeyIsDown = false;
   }
      if(thisKey == Keyboard.A){
    leftKeyIsDown = false;
   }
  }
  public function moveTank(e:Event):void{
   if(rightKeyIsDown){
    this.x += speed;
   }
   if(leftKeyIsDown){
    this.x -= speed;
   }
  }
  }
  }

Добавлено (28.02.2012, 19:19)
---------------------------------------------
на сцене в фла есть мувиклип класса Tank и базовый класс KeyboardTank.как его заставить слушать этот класс?

daponДата: Понедельник, 05 Марта 2012, 07:42 | Сообщение # 10
уже был
Сейчас нет на сайте
Пропишите имя экземпляра добавленного на сцену.
sht_aleksДата: Четверг, 08 Марта 2012, 13:14 | Сообщение # 11
был не раз
Сейчас нет на сайте
Quote
на сцене в фла есть мувиклип класса Tank

knebu, ты свой класс танка формируешь видимо так:
Code
public class Tank extends MovieClip

а наверно больше подходит вот так:
Code
public class Tank extends KeyboardTank

Т. е., тут он как мувиклип автоматом тоже снаследуется.
Я глядя на твой приведённый код, тоже бы не понял, почему он не работает! Я учу эти классы, сам мучаюсь.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг