Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Знакомство с Flash 9 и ActionScript 3.0 на примере создания аркадной игры (http://www.flasher.ru/forum/showthread.php?t=83431)

veisss 01.09.2009 12:19

действительно классная статья. сам с нее начал AS3 учить, вот во что у меня превратилась сие творение Robocity

VladiT 30.09.2009 23:53

Автор, ты реально крут:) у знакомого взял этот пример, начал ковыряться и вот только сейчас нашел этот форум. До этого никогда не работал с флешем, а тут решил попробывать, делал все на AFlash CS4, 10-й Player. После биллион ошибок, вроде все стало работать(хотя есть кое какие глюки дошел до посл. стр). Вот только мне почемуто показалось, что игру я делал быстрее чем учил флеш, хотя вникал и переписывал все в ручную, вплоть до комментариев. Сейчас вот проблемы с этой моделью дисплей-объектов AS3.0 ни как вникнуть немогу, что где куда... не вижу общей картины связаности, также так как там не указан Document class, без понятия как порядок загрузки мувиков... чувствую сейчас отправят в гугл :)

Насчет примера, так как код старый, незнаю реально ли на нем нормально научиться... повторюсь до этого с флешем не связывался, начил ровно с AFlash CS4 и AS3.0.

petrikov 04.10.2009 03:04

Я тоже начал с cs4, порыскав в интернете на предмет обучающих материалов, наткнулся на сей пример. Сперва на несущественные вещи (на мой взгляд) забивал, но потом пришел к выводу, что я в принципе не понимаю, что делаю)). В итоге начал заново и все по порядку.
Ближе к делу.
Код AS3:

// Нажатие кнопки мыши по нашему мувику
function handleMouseDown(event:Event):void {
        var dx:Number = width-stage.stageWidth;
        var dy:Number = height-stage.stageHeight;
        var dragRect:Rectangle = new Rectangle(-dx,-dy, dx,dy);
        startDrag(false, dragRect);
}

при клике мышкой на фоне фон улетает в сторону. Внимание - вопрос. Как осуществляется расчет координат на сцене? мувик с фоном нужно помещать центром в левый верхний угол scene? Ответы на самые тупые вопросы искать тяжелее всего...

TonKhaO 18.10.2009 14:07

прям вопрос по первому пункту, хеллооу ворлд почему не получаетися посмотрите скриншот, все сделал как там написано и нифига в аутпуте нету
[откоцано за разнос страницы форума]

Anate 09.11.2009 23:15

Я тоже вначале застрял. Практически ничего не понимаю. Есть уроки по ActionScript 3.0 для совсем чайников?

mykolka 25.11.2009 19:13

очень понравился урок (да и сама игра). сижу вот разбираюсь. автору большое спасибо!

пока не смог отловить утечку памяти: через несколько минут игры начинаются жуткие тормоза (загрузка процессора под 100%). юзаю флеш цс4. деструкторы вроде везде стоят. мож сборщик мусора в флеше плохо работает?

mysBer 02.12.2009 00:27

Подскажите пожалуйста, в чём ошибка:

TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.
at src::moving_object()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at src::sky()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at game_fla::MainTimeline()
TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.
at src::moving_object()
at src::sky()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at game_fla::MainTimeline()

bzzt 03.12.2009 23:46

Цитата:

Сообщение от mysBer (Сообщение 869619)
Подскажите пожалуйста, в чём ошибка:

TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.
at src::moving_object()
at flash.display::Sprite/constructChildren()
...

У тебя мувик, полагаю, компилируется для 10-го флешплеера. Поставь в настройках 9-ку, мне помогло. Сам код затыкается в moving_object(), при Velocity = new Vector().

mysBer 04.12.2009 01:28

bzzt, спасибо огромное! Помогло!

DVHERO 17.12.2009 14:37

Здравствуйте. Вот повезло найти этот форум. Начать разбиратся в этой игре что и как по туториалу. Все шло хорошо, но сейчас возникла проблема с астероидами, они не двигаются..., делал все как написано в туторе, просматривал исходник, вроде все также, но мой пример почему то не работает,подозреваю что косяки в moving_object и sky,больше негде)
vector тоже использую из туториала

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;
            }
    }
}

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();               
          }
    }
}

что я делаю не так


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

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