-1

1 週間前から、flex 4 アプリケーションがローカル環境とリモートで展開された環境で異なる動作をしていることがわかりました。

bin-debug フォルダー全体をリモートにコピーしましたが、なぜこれが起こるのかわかりませんか? リモートにコピーされたのと同じswfと、アプリの実行に使用しているのと同じブラウザーですが、動作が異なるだけです。

さて、レイアウトに問題がある投稿のいくつかを読みましたが、ローカルとリモートで表示が異なりますが、私の場合、レイアウトの問題は見られませんが、コードの動作が異なるようです. 同様に、動的マスキング、共謀検出、深度ソートアルゴリズムをコードに実装しましたが、これはローカル環境では完璧に機能し、リモート環境では機能しません。

キャッシュの問題である可能性があると思われる場合は、お知らせください。ブラウザのキャッシュをクリアしました(実際、アプリを実行する前にほとんどの場合そうしています)。また、リモートのファイルを完全に削除し、すべてのファイルを再度コピーしました。「リリース」ビルドもデプロイしてみましたが、同じことです。上記の各手順をさまざまな組み合わせで複数回実行して、修正を確認しましたが、まだうまくいきません。

これは問題ではないと確信しています

ローカル環境で WAMP を使用し、リモート環境で LAMP を使用しています

最新バージョンが表示されていることを確認するために、バージョン番号を追加し、デバッグ ウィンドウに表示しました。両方の環境で同じ番号が表示されるため、両方が同じバージョンであることがわかります。

これらは、メインのswfとともにコピーしたすべてのファイルです

framework_4.0.0.14159.swf
main.swf
osmf_flex.4.0.0.13495.swf
rpc_4.0.0.14159.swf
spark_4.0.0.14159.swf
sparkskins_4.0.0.14159.swf
test.swf
textLayout_1.0.0.595.swf

これを解決する方法がわかりません。助けてください

4

1 に答える 1

0

ショーンフサイン、どうもありがとう。スニッピング ツールを使用してトレースを使用し、バグを見つけました。

そのすべてはホスト名にあります。urlで見つかった拡張子に基づいてアセットタイプを見つけていました。アセット タイプが「画像」の場合は透明ピクセルを削除し、画像でない場合 (xml、swf など) は無視します。

これは資産タイプを決定するコードです (デフォルト値は「不明」であることに注意してください)。

    private function getAssetType(url:String):String{

        var type:String = "unknown";

        var ext:String = getExtension(url);

        if (ext == "png" || ext == "jpg" || ext == "jpeg" || ext == "bmp"){
            type ="image";
        }else if (ext == "swf"){
            type = "swf";
        }

        return type;

    }
    // this is the buggy code
    private function getExtension(str:String):String{
        return  str.split(".")[1];
    }

バグは getExtension() 関数にあります。ファイル名にのみドットが含まれていると予想していましたが、分割は 2 つの配列要素を返し、2 番目の要素は拡張子です。

この変数を渡すと

http://localhost/assets/images/Rendered/aksum_se.png

それはpngを返します

http://19x.19x.24x.xxx/assets/images/Rendered/aksum_se.png

19x を返すため、不明な形式です。さて、私はそれを修正しました。

今、私は、画像のURLに関係のない深さの並べ替えが機能しない理由に少し興味がありますが、うまくいくと思います。

于 2012-05-04T14:35:14.467 に答える