Форум 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=124470)

imdogma 30.04.2009 14:34

Странности с ресайзом
 
Всем привет! Решил полностью перейти на AS3, и вот столкнулся с такой проблемой с ресайзом. Собственно, вот код:
Код AS3:

package com {
 
        import flash.display.MovieClip;
        import flash.events.*;
        import caurina.transitions.*;
 
        public class prototype extends MovieClip {
 
                var __putContent:MovieClip = new __Content();
 
                public function prototype():void {
 
 
                addChild(__putContent);
 
                __putContent.x = Math.round(stage.stageWidth - __putContent.width)/2;
                __putContent.y = Math.round(stage.stageHeight - __putContent.height)/2;
 
                stage.addEventListener(Event.RESIZE,ResizeItems);
 
                }
 
                private function ResizeItems(e:Event):void {
 
                var __newContentX:Number = Math.round(stage.stageWidth - __putContent.width)/2;
                var __newContentY:Number = Math.round(stage.stageHeight - __putContent.height)/2;
 
                Tweener.addTween(__putContent,{x:__newContentX, y:__newContentY, time:1, transition:"easeOutElastic"});
 
                }
 
        }
 
}

Все работает, да только вот почему то при ресайзе сдвигаемый объект почему-то едет не в центр, а куда то к краю:( Хотя по той же форумле в АС2 все работало. Помогите пжалуста :drinks:

flash33 30.04.2009 14:40

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

divinus 30.04.2009 14:44

Код AS3:

public class Test extends Sprite {
 
                public function Test() {
 
                        super.stage.scaleMode = StageScaleMode.NO_SCALE;
                        super.stage.align = StageAlign.TOP_LEFT;
 
                        this._ball = new Shape();
                        with (this._ball.graphics) {
                                lineStyle(0, 0, 0);
                                beginFill(0);
                                drawCircle(50, 50, 50);
                                endFill();
                        }
                        super.addChild(this._ball);
 
                        this._ball.x = (super.stage.stageWidth-this._ball.width)>>1;
                        this._ball.y = (super.stage.stageHeight-this._ball.height)>>1;
 
                        super.stage.addEventListener(Event.RESIZE, this.handler_stageResize);
                }
 
                private var _ball:Shape;
 
                private function handler_stageResize(event:Event):void {
                        this._ball.x = (super.stage.stageWidth-this._ball.width)>>1;
                        this._ball.y = (super.stage.stageHeight-this._ball.height)>>1;
                }
        }


imdogma 30.04.2009 14:49

Код AS3:

super.stage.scaleMode = StageScaleMode.NO_SCALE;
        super.stage.align = StageAlign.TOP_LEFT;

вот что помогло :)divinus,flash33 спасибо за помощь :)

divinus 30.04.2009 15:02

imdogma, ну я собственно так и думал...

iNils 30.04.2009 15:10

А кто вас надоумил назвать класс prototype?

Distorn 30.04.2009 15:19

а что, разве prototype в AS3 ключевое слово?
Единственное что с верхнего регистра нужно было называть

divinus 30.04.2009 15:35

Distorn, названия надо давать такие, чтобы через год посмотреть и понять что это за класс. думаю название класса Prototype явно выбивается из этого правила

BlooDHounD 30.04.2009 15:39

к тому же оно псевдоключевое. у любой функции/класса, есть такое свойство.

imdogma 30.04.2009 15:46

Переименовал:)))


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

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