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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0 > Статьи

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2009, 14:43
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 201  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
код не читабелен...читайте про конвенции оформления кода.

http://opensource.adobe.com/wiki/dis...ng+Conventions
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 17.12.2009, 15:03
DVHERO вне форума Посмотреть профиль Отправить личное сообщение для DVHERO Найти все сообщения от DVHERO
  № 202  
Ответить с цитированием
DVHERO

Регистрация: Dec 2009
Сообщений: 2
sky.as
Код AS3:
package main 
{
     import flash.display.MovieClip;
     import flash.events.*; 
     import main.*;
 
    dynamic public class sky extends MovieClip 
    {
 
      var new_asteroid:moving_object;
 
      public function sky() 
      {
          addEventListener(Event.ENTER_FRAME, Update); 
	  dropAsteroid();
      }
 
      public function dropAsteroid():void
      {
         new_asteroid = new moving_object();
         addChild(new_asteroid);
         new_asteroid.drop(200,300, 500,500);
      }
 
      public function Update(e : Event):void 
      {
         new_asteroid.move();                
      }
 
    }
}

moving_object.as
Код AS3:
package main 
{
     import flash.display.MovieClip;
     import main.*;
 
    dynamic public class moving_object extends basic_object 
    {     
     const DROP_RADIUS:Number = 200;     // разброс при вбрасывании
     const MIN_SPEED:Number = 1;  // раброс начальной скорости
     const MAX_SPEED:Number = 10; 
     public var Velocity:Vector; // вектор движения
 
        public function moving_object()
        {
                var num:Number;
                num = Math.floor(Math.random()*totalFrames)+1; 
                gotoAndStop(num); // и переходим на него
                Velocity = new Vector(); // создаем вектор
                // вычислим наш радиус, основываясь на размере картинки
                radius = Math.floor((width+height)/4);     
        }
 
		 // Вбросить объект рядом с указанной точкой x1:y1 и двигаться к x2:y2
	public function drop(x1:Number,y1:Number, x2:Number,y2:Number):void 
        {
              // координата вброса
              x = x1 + (Math.random()-0.5)*DROP_RADIUS;
              y = y1 + (Math.random()-0.5)*DROP_RADIUS;
              // направление
              Velocity.setMembers(x2-x, y2-y);
              // скорость
              var spd:Number = MIN_SPEED + (MAX_SPEED-MIN_SPEED)*Math.random();
              // приведем длину вектора к выбранной скорости
              Velocity.mulScalar( spd / Velocity.magnitude() );
        } 
 
	// Переместиться
	public function move():void
        {
     		 x += Velocity.x;
    	         y += Velocity.y;
        } 
    }
}
переделал....
Так будет правильно?


Последний раз редактировалось DVHERO; 17.12.2009 в 15:04. Причина: неправильно оформил текст
Старый 22.12.2009, 13:14
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 203  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Судя по коду все верно, но раз не работает, то последовательно ищите ошибку. Добавляйте trace в коде, чтобы убедиться, что все нужные функции вызываются и параметры верные.
Добавьте в sky.as
Код AS3:
      public function Update(e : Event):void 
      {
trace("new_asteroid=", new_asteroid); // убедиться, что new_asteroid проинициализирован
         new_asteroid.move();                
      }
в moving_object.as
Код AS3:
	public function move():void
        {
     		 x += Velocity.x;
    	         y += Velocity.y;
trace(this, "x:y=", x, y, "Velocity=", Velocity); // убедиться, что функция вызывается и координаты меняются
        }
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 28.12.2009, 16:40
waror вне форума Посмотреть профиль Отправить личное сообщение для waror Найти все сообщения от waror
  № 204  
Ответить с цитированием
waror

Регистрация: Nov 2009
Сообщений: 7
ненавжу adobe ппц неужели неьзя сделать норм скачку? все какую то парашу с меня требует. я зарегался .а дальше черт с кастылем махает урод


а так спасибо за статью

Старый 10.01.2010, 11:16
zikoriy вне форума Посмотреть профиль Отправить личное сообщение для zikoriy Найти все сообщения от zikoriy
  № 205  
Ответить с цитированием
zikoriy

Регистрация: Dec 2009
Сообщений: 14
классно) спасибо, обязательно прочту) а ты по ас1 и 2 ничего не писал?)

Старый 13.01.2010, 23:29
McSun вне форума Посмотреть профиль Отправить личное сообщение для McSun Найти все сообщения от McSun
  № 206  
Ответить с цитированием
McSun

Регистрация: Nov 2009
Сообщений: 5
Цитата:
Сообщение от MerlinTwi Посмотреть сообщение
Nirth, спасибо за столь подробный разбор статьи. Все замечания учту в версии 2.0
Версия 2.0 увидела свет?

застрял на классе background
сначала ругалось на parent.startDrag() и parent.stopDrag() - Call to a possibly undefined method startDrag through a reference with static type flash.displayisplayObjectContainer

как учили старшие товарищи обыграл так: (parent as MovieClip).startDrag(...

но дальше - хуже, еще ругается на строки if (root.panel.dragged_mc) и root.panel.handleMouseUp(); - Access of possibly undefined property panel through a reference with static type flash.displayisplayObject
есть стойкое ощущение, что содержимое fla-файла не вполне соответствует его описанию
че делать то?

Старый 14.01.2010, 09:48
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 207  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
> ругается "Access of possibly undefined property"
правильно ругается. Свойство parent имеет тип DisplayObject у которого нет методов типа startDrag или свойств dragged_mc и т.п. С точки зрения компилятора такой код неверен. Можно это обходить приведением типов (как вы правильно писали parent as MovieClip), а можно попросить компилятор закрыть глаза на эту вопиющую безграмотность (Publish Settings -> Action script .. Settings -> снять галочку Strict Mode), и все скомпилируется и заработает и даже без ошибок, поскольку в качестве parent там MovieClip, у которого есть все требуемые методы и свойства.

> Версия 2.0 увидела свет?
нет. С точки зрения грамотного ООП программирования на AS3, эта статья полная лажа. Яркий пример того, как не надо писать на AS3 Ее не стоит рекомендовать желающим изучить AS3... но она может быть полезна тем, кто переходит с AS1,2 на AS3, поскольку после AS1,2 еще остается процедурное мышление и навязчивое желание вызывать не свои методы напрямую, типа parent.startDrag
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 14.01.2010, 20:32
McSun вне форума Посмотреть профиль Отправить личное сообщение для McSun Найти все сообщения от McSun
  № 208  
Ответить с цитированием
McSun

Регистрация: Nov 2009
Сообщений: 5
Цитата:
Сообщение от MerlinTwi Посмотреть сообщение
С точки зрения грамотного ООП программирования на AS3, эта статья полная лажа. Яркий пример того, как не надо писать на AS3 Ее не стоит рекомендовать желающим изучить AS3... но она может быть полезна тем, кто переходит с AS1,2 на AS3...
а что (кроме Мука) можно почитать, чтобы грамотно писать на AS3?

Старый 17.02.2010, 13:19
ageent вне форума Посмотреть профиль Отправить личное сообщение для ageent Найти все сообщения от ageent
  № 209  
Ответить с цитированием
ageent

Регистрация: Jan 2010
Сообщений: 44
огромное спасибо

Старый 14.03.2010, 17:38
cpu вне форума Посмотреть профиль Отправить личное сообщение для cpu Найти все сообщения от cpu
  № 210  
Ответить с цитированием
cpu

Регистрация: Mar 2010
Сообщений: 223
Решил делать сам по тексту, не смотря в исходники(зато ошибки компиляции отлавливаю, все делаю в строгом режиме). Мозг уже сломал наверно.
У меня непонимание места с секторами, и проверкой на столкновение.
А именно
Код AS3:
delete all_sectors[s][obj.name];
и
Код AS3:
all_sectors[s][obj.name]=obj;
.

Представляю так:
all_sectors[1][name 1]
all_sectors[1][name 2]
all_sectors[1][name 3]

если проверять на существование all_sectors[1], то даст true.
Если удалить все
all_sectors[1][name 1]
all_sectors[1][name 2]
all_sectors[1][name 3]

то при проверка на существование all_sectors[1], даст false.

Короче
Код AS3:
delete all_sectors[s][obj.name];
делается, что бы не совершать проверку на столкновение с самим собой(скажем так)?


Последний раз редактировалось cpu; 14.03.2010 в 17:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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