2009-09-02 2 views
0

Хотя я указываю разные ширины и высоты для каждого.Flash AS3 - Второе видео, созданное на сцене, имеет тот же размер, что и первый

vid = new Video(600, 800); 
this.addChild(vid); 
trace(vid.width); //600 
trace(vid.height); //800 

vid2 = new Video(1000, 1200); 
this.addChild(vid2); 
trace(vid2.width); //600 
trace(vid2.height); //800 

Что здесь происходит? Это ошибка вспышки?

+0

Что происходит, если вы сначала создаете vid2? Значения остаются неизменными или выходят из 1000, 1200? – picardo

+0

Да, если я переключу заказ, они оба получат размер до 1000х1200. – 2009-09-02 01:12:35

ответ

0

Я просто попробовал ваш образец кода в Flash CS4 на Mac, и я не видел эту проблему (мне пришлось добавить var перед именами переменных). Какую версию и платформу вы используете? Это может быть ошибка.

1

Это ошибка. Обходной путь прост - вам просто нужно вручную установить ширину и высоту после вызова конструктора. Я делаю это, создав свой собственный класс Video, который наследуется от одного в flash.media, например, так:

package com.ganzogo.media { 

    import flash.media.Video; 

    public class Video extends flash.media.Video { 

    public function Video(width:int=320, height:int=240) { 

     super(width, height); 
     this.width = width; 
     this.height = height; 

    } 
    } 
} 

Тогда просто импортировать этот класс, и ваш код должен работать. Обратите внимание, что я устанавливаю значения по умолчанию для измерений; это соответствует значениям по умолчанию в родительском классе.

1

Эта проблема может решить проблему отображения, но у нас есть другая проблема с катастрофой. Когда вы используете BitmapData для «рисования» видеоконтента, эта проблема снова возникает, и независимо от того, что вы пытаетесь сделать, изображение, которое вы делаете с видео, находится в размере, указанном вами первым компонентом Video для этого экземпляра FlashPlayer.

Независимо от того, что вы делаете, это не решит проблему. Таким образом, обходным путем является следующее:

  1. Дайте первому видеообъекту вы создаете максимальный размер в пикселях, которые вы можете иметь для своих видео. Например:

    var videoDisplay:Videonew Video(1280, 720); 
    
  2. Чтобы снимок видео дисплей, Вы должны использовать класс Matrix, например:

    var extractImage:BitmapData = new BitmapData(videoDisplay.videoWidth, videoDisplay.videoHeight); 
        var videoMatrix:Matrix = new Matrix(); 
        videoMatrix.scale(Number(videoDisplay.videoWidth)/1280.0, Number(videoDisplay.videoHeight)/720.0); 
        extractImage.draw(videoDisplay, videoMatrix, null,null,null, true); 
    

Теперь, когда вы используете этот Bitmap, как изображение, которое вы получите право изображение, которое вы хотите. Если вы используете более высокое разрешение видео, увеличьте этот размер видео.

+0

Используйте клавишу 'Shift'. –

Смежные вопросы