fc2ブログ

テキストメソッド(text)で表示されたテキストが1行おきに表示されてしまう。

textメソッドで、表示させたテキストが、サーバ上(UNIX)では正常に表示されるのに、
ローカル上(Windows)では1行おきに表示されてしまう。



  AAAAAA
  BBBBBB   
  CCCCCC

  上記の内容が

  AAAAAA

  BBBBBB

  CCCCCC

  と表示されてしまう。

原因は、テキストファイルの改行コード。

以下は推測。

今回は、メモ帳で文章を作成し、そのまま使用したが、
この場合、改行コードは、CR+LFとなる。
今回、作成した文章は、Shift-JISからUTF-8に変換し表示している。

UTF-8の改行コードは、LFとなっていて、CRが文字として見なされたため、
ローカルでは改行されてしまったと思われる。

今回は、以下のようなコーディングを行い、回避した。
これで、サーバ上、ローカル上での違いがなくなった。

-------------------------以下はソース---------------------------
// 外部テキストファイルはLoaderで読み込む
var loader:URLLoader=new URLLoader();
//バイナリー形式として受け取る。
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, completeHandler);

loader.load(new URLRequest("../text/keyimage/dat.txt"));

function completeHandler(evt:Event):void {

     // 読み込んだデータは、loader.dataの変数として取り込まれる
    // shift-jisからUTF8に変換する。
    var byteData:ByteArray = new ByteArray(); 
    byteData = ByteArray(loader.data);
    var src:String = byteData.readMultiByte(byteData.length, "shift-jis");

    //正規表現を使用し、改行コード(CR+LF Windows,UNIX:LF,Mac:CR)をすべてLFに着替える。
    //これを行わないと、ローカル(Windows)上で、1行おきに表示されてしまう。
    var myPattern:RegExp = /\r\n|\r|\n/g;
    var result_str:String = src.replace(myPattern, "\r");
    text_mc.textfield.text = result_str;
}

スポンサーサイト



ダイナミックテキストと静止テキストについて

ダイナミックテキストとは

 ・swfファイル上では、コードとして保持される。
 ・ブラウザーで表示する場合は、PC上のフォントを使用して表示される。
 ・PC上のフォントを使用する関係上、存在しないフォントを指定された場合、代替えフォントが表示されたり、文字化けする。
 ・図形としての効果を指定できない。(アルファー値など。ただし、ムービークリップ化すれば可能)
 ・Action Scriptで操作ができる。

 ただし、ダイナミックテキストでも、文字の埋め込み指定を行えば、他の環境でも指定フォントで表示が可能。
 hfm-kenchan.com/Lesson/log_qa/D0309211.htm

静止テキストとは
 
 ・swfファイル上では、アウトラインデータとして保持される。
 ・アウトラインデータで表示されるので、フォントが存在しなくても表示が出来る。
 ・文字としての効果を指定できる。
 ・Action Scriptでは操作できない。


超高速でロゴを仕上げるために覚えておきたい方法

www.ideaxidea.com/archives/2010/09/how_to_design_logo_fast.html

ActionScript3.0で、文字コード変換を行うと、「TypeError: Error #1034: 強制型変換に失敗しました。」が表示される。

Shift-jisからUTF-8へコード変換を行うと、ByteArrayクラスで上記エラーが表示される。

原因は、データフォーマットの設定ミス。
(URLLoaderDataFormatクラス)
文字コード変換を行う時は、フォーマットをバイナリー指定する必要がある。

今回は、以下のコードを記述した。

// 外部テキストファイルはLoaderで読み込む
var loader:URLLoader=new URLLoader();
//text形式として受け取る。
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("dat.txt"));
//

function completeHandler(evt:Event):void {

  // shift-jisからUTF8に変換する。
    var byteData:ByteArray = new ByteArray(); 
    byteData = ByteArray(loader.data); 
    var src:String = byteData.readMultiByte(byteData.length, "shift-jis");

    textfield.htmlText = src;
}

上記コードの
loader.dataFormat = URLLoaderDataFormat.TEXT;
の部分は、
loader.dataFormat = URLLoaderDataFormat.BINARY;
と指定しなければならないが、フォーマット形式をテキストと指定していたため、
ByteArrayクラスが扱うことが出来なかった。
そのため、上記エラーが発生していた。

URLLoaderdataFormatクラスのパラメータをBINARY指定するようにする。

1119:未定義である可能性が高いプロパティ xxxxに静的型Classの参照を使用してアクセスしています。というエラーメッセージが出る。

原因は、ActionScriptのバージョン設定ミス。

Ver.2.0にもかかわらず、Ver.3.0で作成していた。
Ver.1.0&2.0にすることによって解決した。

function(evt:Event):void (addEventlistenerの第2パラメータ)

function(evt:Event):void
上記のパラメータは、Event オブジェクトを唯一のパラメータとして受け取り、何も返さないものを表す。

Event.ENTER_FRAMEについて(addEventListenerの第一パラメータ)

このパラメータは、繰り返し処理を行うときに使用する。

例:
box_mc.addEventListener(Event.ENTER_FRAME, stepRotation);
ムービークリップbox_mc上で、関数stepRotationを繰り返し処理する。

Apache2.2ドキュメント

httpd.apache.org/docs/2.2/

基本認証(Basic認証)で何回もユーザID、パスワードを求められてしまう。

原因は、.htaccess内のAuthNameの設定。
Basic認証は、AuthNameを認証領域としてみなしている。
一つの認証領域には、一組のユーザIDとパスワードの組み合わせしか格納できない。

今回、以下のようなディレクトリ構造で
二つのディレクトリに対し、異なるユーザIDとパスワードで認証させようとしていた。

  home?????Directory A ?????Directory B

Direcroty Aまでは、ユーザID AとパスワードAを知っていれば、ログインできるが、
Directory Bについては、ユーザID BとパスワードBを知らないとログインできない。

今回、Directory AとBにそれぞれ異なる.htaccessファイルを置いていたが、
(ユーザIDとパスワードは別)
AuthNameを同じにしていたため、別々のフォルダーでも一つの認証領域としてみなされていた。
一組のユーザIDとパスワードしか格納できないため、その結果、ディレクトリを交互に移動するごとに
ユーザIDとパスワードを求められていた。

それぞれのAuthNameを異なるものにした。

参考URL
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1128067516

blog.y-110.net/log/eid133.html
         
         

基本認証でアクセス制限する方法(Windows版)

基本的には、前出の「基本認証でアクセス制限する方法」で
OKであるが、Windows上で基本認証を有効にするためには、以下の準備が必要となる。

下記の設定は、ローカル環境上にxamppの環境を設定した例である。

1:apacheの設定変更(htaccessファイルのファイル名の変更)

 Windows環境上では、ドットが先頭に着くファイル名が作成できないため、
 .htaccessではなく、htaccessで認識できるように設定ファイルを変更する。
 
 xampp/apache/conf/extra配下のhttpd-default.conf内の
 AccessFileNameの部分を.htaccessからhtaccessに変更する。
 変更後は、apacheを再起動すること。
 
2:htppasswd.exeでパスワードファイルを作成する。

  xampp/apache/bin/htpasswd.exeでパスワードファイルを作成する。
  入力形式は、以下の通り。

  htpasswd -c △(パスワードファイルまでのパス)△(ユーザ名)

  入力例 Cドライブ配下に testというユーザ名でhtpasswdというパスワードファイルを作成する。
  
       htpasswd -c c:\htpasswd test

  上記入力を行うと、
  Automatically using MD5 format
     New password:と表示されるので、指定したいパスワードを入力する。
  パスワード入力後 Re-type new password:と表示されるので、もう一度パスワードを入力する。

  Adding password for user (ユーザ名)と表示されれば、パスワードファイルが作成されたことになる。

3:htaccessの編集
  
  「基本認証でアクセス制限する方法」の.htaccessの編集方法と同様である。
  以下は、一例である。

  AuthType Basic
  AuthName "Input your ID and Password."
  AuthUserFile /sotsusei/SGP/html/limit_to_access/htpasswd
  require valid-user

  AuthUserFileの部分については、フルパスでの指定も可能である。

注意点として、パスワードファイルについては、htpasswd.exeで作成する必要がある。
いろいろなサイトで公開されている.htaccessのパスワード生成で作成されたパスワードでは、
認識されないので注意すること。

基本認証でアクセス制限する方法

allabout.co.jp/gm/gc/23780/

上記に説明がある。

.htaccessファイルの中には、以下の記述を行う。

AuthType Basic
AuthName (ログイン画面に表示させるメッセージなど)
AuthUserFile (ID・パスワード格納ファイル(.htpasswdファイル)の所在)
require valid-user

記述例は、以下のとおり
AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/nishishi/pw/passwd.dat
require valid-user

AuthUserFileのパスについては、サーバ内のフルパスとする。
(FTPソフトなどで確認可能)

.htpasswdファイルはtelnetでログインしても作成可能であるが、
以下のサイトを使用すると容易にできる。
www.luft.co.jp/cgi/htpasswd.php

HP上にページが存在しないときに独自の404ページを表示させる方法

www.shtml.jp/htaccess/404.html

上記のURLに説明がある。

.htaccessファイルを作成し、その中に

ErrorDocument 404 (表示させるhtmlファイルが格納されているフォルダーまでのパス)

と記述する。

フォルダーまでのパスは、
http://www.aaa.com/404err/404err.htmlの形式か
/404err/404err.htmlとする。
後者の場合は、ドキュメントルートからのパスとする。




fgetcsvについて

PHP5の環境において、fgetcsvを使用すると、
一文字目の日本語が文字化けするという現象が発生しているようである。

blog.paz-para.com/

以下の関数で回避できるようである。
yossy.iimp.jp/wp/

while文でファイルを読み込ませたところ、一回余分にループする。

原因は、ファイル作成方法にあった。

aaaaa
bbbbb
cccccc
[EOF]

上記のように作成されていたため、一行空欄が存在するとみなされていた。
この場合4回ループした。

aaaaa
bbbbb
cccccc[EOF]

上記のように表示しなおしたところ、
正常にループするようになった。


as3で文字コードを変換する方法

kudelab.com/archives/20

AS3.0で外部テキストを読み込む方法

web.mac.com/ymori.com/AS3/AS3Blog/%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC/2006/7/24_%E5%A4%96%E9%83%A8%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E5%A4%89%E6%95%B0%E3%81%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80%EF%BC%88%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E5%86%85%EF%BC%89.html

Action Script3.0で動的に画像を読み込む方法

www.bute-studio.com/lab/2008/01/as3loader.html

GPL LGPLの違い。

以下に記述がある。

detail.chiebukuro.yahoo.co.jp/qa/question_detail/q109123035

ja.wikipedia.org/wiki/GNU_General_Public_License

ameba blogのRSSを取得したときに、最新記事が表示されたりされなかったりする。

詳しい原因は不明。

現象としては、PRのRSS(タイトルの先頭にPR:がつくもの)を受信したときに発生している。


blogを更新しても、更新記事がHPに表示されない。

原因は、simplepieのキャッシュの設定。

simplepieは、set_cache_location(キャッシュディレクトリ名)が
指定されると、キャッシュが有効になる。

キャッシュはset_cache_duration(キャッシュ有効時間(秒));
で指定することが出来るが、デフォルトでは60分が有効になっている。

今回の評価時は、キャッシュを有効にし、キャッシュ有効時間を
指定しなかったため、キャッシュが60分間有効になり、その結果、
更新記事が表示されなかった。

対処としては、
enable_cacheにfalseを指定し、キャッシュを無効とした。

jQuery事例、サンプル

f32.aaa.livedoor.jp/~azusa/

semooh.jp/jquery/sample/

phpjavascriptroom.com/

jQueryで出来る事例の紹介と、サンプルが載っている。

php google Map api Ver3.0について(目的地までの経路を表示する)

addDirections関数を使用することで可能となる。

以下は、コーディング例である。
<?php
include_once("./php_google_map/GoogleMap.php");
include_once("./php_google_map/JSMin.php");

$DIRECTIONS_CONTAINER_ID = "map_directions";
$DIRECTIONS_CONTAINER_ID2 = "map_directions2";

$MAP_OBJECT = new GoogleMapAPI();
$MAP_OBJECT->_minify_js = isset($_REQUEST["min"])?FALSE:TRUE;
$MAP_OBJECT->setDSN("mysql://dbuser:dbuser@localhost/google_api");
$MAP_OBJECT->disableSidebar();
//$MAP_OBJECT->addDirections("Littleton, CO", "Englewood, CO", $DIRECTIONS_CONTAINER_ID, $display_markers=true);

//辻堂駅、里山公園
$MAP_OBJECT->addDirections("loc: 35.337048912602356,139.44723665714264", "loc: 35.37410289768044,139.41993981599808", $DIRECTIONS_CONTAINER_ID, $display_markers=false);
//湘南台駅、里山公園
$MAP_OBJECT->addDirections("湘南台駅", "loc: 35.37410289768044,139.41993981599808", $DIRECTIONS_CONTAINER_ID2, $display_markers=false);

//撮影会会場マーカー
$MAP_OBJECT->addMarkerByCoords(139.41993981599808,35.37410289768044 ,"", "撮影会会場(里山公園)");

// 地図の表示形式の初期値を指定
$MAP_OBJECT->setMapType('map');
// Street Viewを使用する。
$MAP_OBJECT->enableStreetViewControls();
// 地図大きさ指定(横幅)
$MAP_OBJECT->setWidth('500px');
// 地図大きさ指定(縦幅)
$MAP_OBJECT->setHeight('500px');

?>
<html>
<head>
<?=$MAP_OBJECT->getHeaderJS();?>
<?=$MAP_OBJECT->getMapJS();?>
</head>
<body>
<?=$MAP_OBJECT->printOnLoad();?>
<?=$MAP_OBJECT->printMap();?>
</body>
</html>

addDirection関数の$display_markers=falseをtrueにすると、出発地と目的地に
マーカーを表示させることができる。
この例は、addMarkerByCoords関数で目的地(撮影会会場)に
マーカーをたてているため、falseにしている。

上記関数は、Google Maps APIのDirectionsクラスを使用したものなので、
詳しくはこの部分の説明を参照のこと。



attachMovieの深度について

深度とは、インスタンスの重なり順序のことで、
値が大きいほど手前に表示され、小さいほど奥に表示される。

参考URL
hakuhin.jp/as/z.html#DEPTH_00

一つの深度には、一つのオブジェクトしか配置できない。


図形を作成することなく、最初にシンボル化するためには?

ライブラリインスペクタの「新規シンボル」アイコン
(一番下の一番左のアイコン)をクリックする。

URL最大長について

以下のURLを参照のこと。

www.connect-i.co.jp/tipsblog/
プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR